jsexecutor クラス : GetData()メソッド
説明
JavaScript で設定された文字列を返します。
構文
instance.GetData()
引数
無し。
返り値
クラス | 説明 |
string | JavaScript で設定された文字列。 |
サンプルコード
1: | jsexecutor jse; // For Main-browser |
2: | string fromJavaScript = jse.GetData(); // It gets a string which is set in JavaScript. |
注意
JavaScriptとRiceが通信するためにJavaScript環境に公開されているホストオブジェクトから文字列を取得します。
JavaScriptで通信データを設定するには以下の様な JavaScript コードを実行します。
window.cooker.external.SetData(token, 'example data');
window.cooker.external.SetData(token,data) は非同期関数です。以下の様なRiceスクリプトは期待したようには動作しない可能性があります。
jsexecutor jse; // For Main-browser
jse.Execute("window.cooker.external.SetData(token, 'example data');");
string fromJavaScript = jse.GetData(); // Probably from JavaScript's value is not "example data".
恐らく fromJavaScript の値は "example data" にはなりません。JavaScript で 非同期関数 (SetData(token, 'example data')) が完了する前に Rice で GetData() が呼び出されるからです。
ホストオブジェクトは以下の名前で 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(tken,data) | JavaScript からデータを Rice に送ります。 |
window.cooker.external.Notice(token,data) | JavaScript から Rice の jsexecutor.Notice イベントを発火します。 |
この他に通信用のオブジェクトとして window.cooker.data が定義されています。※このオブジェクトは window.chrome.webview.hostObjects には存在しません。
Rice:jsexecutor.SetData(string) の引数は、window.cooker.external.GetData(token) のために保存されますが、window.cooker.data にも代入されます。
window.cooker.external.GetData(token) は非同期関数なので、データを受け取るのに様々な制約がありますが、window.cooker.data は、ただのオブジェクトですので簡単にアクセスすることが出来ます。
ホストオブジェクトについてはJavaScriptの拡張機能を参照してください。
参照リンク
無し。