jsexecutor クラス : Notice(class,string) メソッド
説明
ハンドラを"Notice"イベントに割り当てます。
構文
instance.Notice(class handleClass, string signature)
引数
クラス | 名前 | 説明 |
class | handleClass | ハンドラをメンバとして持つインスタンス。 |
string | signature | ハンドラのシグネチャ。 |
返り値
クラス | 説明 |
switch | ハンドラの実行を制御するインスタンス。 |
サンプルコード
次のクラス定義があるとします。
1: | class handle |
2: | open method void NHandler(dictionary dic) |
3: | switch sw = dic.Switch; |
4: | string data = dic.Data; |
5: | endmethod |
6: | endclass |
ハンドラの割り当ては次のとおりです。
1: | jsexecutor jse; // For Main-browser |
2: | handle h = new handle(); |
3: | switch sw = jse.Notice(h,"Nhandler(dictionary)"); |
4: | sw.Start(); |
注意
"Notice"イベントは JavaScript で以下の関数を呼び出した時に発生します。
window.cooker.external.Notice(token, 'A string data which will be passed to the Rice.');
関数の引数がハンドラに渡されます。
window.cooker.external は JavaScript と Rice が通信するために JavaScript 環境に公開されているホストオブジェクトです。
"Notice"イベントのハンドラは、dictionaryクラスの引数を一つ持つopenメソッドでなければなりません。
つまり、ハンドラのメソッド名が "handlerName"の場合、ハンドラの定義は次のようになります。
open method void handlerName(dictionary dic)
...
endmethod
この場合、第2引数で指定されるハンドラのシグネチャは "handlerName(dictionary)"です。
ホストオブジェクトは以下の名前で JavaScript に公開されています。
window.cooker.external
window.chrome.webview.hostObjects.external
前者は後者の別名です。どちらを使っても同じように機能します。ここでは、window.cooker.external を例にして説明します。
window.cooker.external は以下の非同期関数を持ちます。
window.cooker.external.GetData(token) | Rice からのデータを JavaScript で受け取ります。 |
window.cooker.external.SetData(token,data) | JavaScript からデータを Rice に送ります。 |
window.cooker.external.Notice(token,data) | JavaScript から Rice の jsexecutor.Notice イベントを発火します。 |
ホストオブジェクトについてはJavaScriptの拡張機能を参照してください。
イベント発生時にハンドラに渡される dictionary は以下の key と value のペアを持ちます。
key | value(クラス) | value(説明) |
Sender | jsexecutor | イベントの発生元。 |
Switch | switch | ハンドラの割り当てで返される switch と同じインスタンス。 |
Data | string | window.cooker.external.Notice(token,data) のdata引数。 |
ハンドラは専用のスレッドで実行されます。
参照リンク
無し。