2

Dart 内から JavaScript を実行するために、(John Evans による) 少しのコードを使用しています。

void injectJavascript(String javascript, [bool removeAfter = false]){
  var s = new Element.tag("script");
  s.attributes["type"] = "text/javascript";
  s.text = javascript;
  document.body.nodes.add(s);
  if (removeAfter != null && removeAfter)
    s.remove();
}

injectJavascript("alert('using javascript')");

しかし、変数を送信または返すことができませんでした。これは現在可能ですか?そうでない場合、いつそれが可能になるか考えていますか?

4

3 に答える 3

5

これを行うには、 postMessageを使用する必要があります。たとえば、変数をJSONに変換した場合は、Dart内からこれを行うことができます

window.postMessage(jsonMessage、 "*");

そして、このようにJavaScript側からそれを拾います

function recieveMessage(event) {
  var message = JSON.parse(event.data);
  :
}
window.addEventListener("message", receiveMessage, false); 

双方向通信やコールバックなどのより高度な機能を使用する必要がある場合は、DartGapのコード、特にDeviceMessageRouterクラスとjavascript統合レイヤーを確認してください。

于 2012-05-20T19:53:52.890 に答える
2

dart.jsを使用して、javascript 関数を直接実行し、リターンを取得できます。

var result = js.context.callMethod('getAnswer', [new js.JsObject.jsify(myargs)]);

ただし、渡される/返されるオブジェクトの型は限られています。直接渡すことができるオブジェクトについては、上記のリンクを参照してください。また、callMethod の引数として使用する前に、list と を「jsified」する必要があることにも注意してください。

于 2016-04-08T13:22:11.857 に答える
1

dart:jsを使用できます。

このライブラリは、Dart から JavaScript オブジェクトへのアクセスを提供し、Dart コードがプロパティを取得および設定し、JavaScript オブジェクトのメソッドを呼び出し、JavaScript 関数を呼び出すことを可能にします。ライブラリは、可能な場合は Dart オブジェクトと JavaScript オブジェクト間の変換を処理し、変換が不可能な場合はプロキシを提供します。

Dart から JavaScript を使用するの記事も参照してください。

于 2014-01-20T12:16:44.980 に答える