Home News DOC Class DL Others Rice
Class  >  jsexecutor  >  GetData()
jsexecutor クラス : GetData()メソッド

説明

JavaScript で設定された文字列を返します。

構文

instance.GetData()

引数

無し。

返り値

クラス説明
stringJavaScript で設定された文字列。

サンプルコード

1:

window w;

2:

jsexecutor jse = w.CurrentJSExecutor;

3:

string fromJavaScript = jse.GetData(); // It gets a string which is set in JavaScript.

注意

JavaScript と Rice が通信するために JavaScript 環境に公開されているホストオブジェクトから文字列を取得します。


JavaScript で通信データを設定するには以下の様な JavaScript コードを実行します。


window.cooker.external.SetData('example data');


window.cooker.external.SetData() は非同期関数です。以下の様な Rice コードは期待したようには動作しない可能性があります。


window w;

jsexecutor jse = w.CurrentJSExecutor;

jse.Execute("window.cooker.external.SetData('example data');");

string fromJavaScript = jse.GetData(); // Probably fromJavaScript's value is not "example data".


恐らく fromJavaScript の値は "example data" にはなりません。JavaScript で 非同期関数 (SetData('example data')) が完了する前に Rice で GetData() が呼び出されるからです。

ホストオブジェクトは以下の名前で JavaScript に公開されています。


window.cooker.external

window.chrome.webview.hostObjects.external


前者は後者の別名です。どちらを使っても同じように機能します。ここでは、window.cooker.external を例にして説明します。

window.cooker.external は以下の非同期関数を持ちます。


window.cooker.external.GetData()

Rice からのデータを JavaScript で受け取ります。

window.cooker.external.SetData(data)

JavaScript からデータを Rice に送ります。

window.cooker.external.Notice(data)

JavaScript から Rice の jsexecutor.Notice イベントを発火します。


この他に通信用のオブジェクトとして window.cooker.data が定義されています。※このオブジェクトは window.chrome.webview.hostObjects には存在しません。

Rice の jsexecutor.SetData(string) の引数は、window.cooker.external.GetData() のために保存されますが、window.cooker.data にも代入されます。

window.cooker.external.GetData() は非同期関数なので、データを受け取るのに様々な制約がありますが、window.cooker.data は、ただのオブジェクトですので簡単にアクセスすることが出来ます。

参照リンク

無し。

Copyright © Rice All rights reserved.