繁体   English   中英

如何使用Dart向javascript函数发送和接收变量?

[英]How can I send and receive variables to and from javascript functions using Dart?

我一直在使用一些代码(由John Evans提供)从Dart中执行javascript:

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')");

但我无法发送或返回变量。 这目前可能吗? 如果没有,任何想法何时成为可能?

您将需要使用postMessage来执行此操作。 例如,如果您已将变量转换为JSON,则可以从Dart内部执行此操作

window.postMessage(jsonMessage,“*”);

然后像这样从JavaScript端拿起它

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

如果您需要处理更高级的事情,例如双向通信和回调,那么请查看DartGap的代码,特别是DeviceMessageRouter类和javascript集成层。

您可以使用dart.js直接执行javascript函数并捕获返回值。

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

但是,传递/返回的对象的类型是有限的。 有关可以直接传递哪些对象的信息,请参阅上面的链接。 还要注意列表,并且在用作callMethod的参数之前应该是'jsified'。

你可以使用dart:js

该库提供对Dart中JavaScript对象的访问,允许Dart代码获取和设置属性,调用JavaScript对象的方法并调用JavaScript函数。 该库负责在可能的情况下在Dart和JavaScript对象之间进行转换,或者在无法进行转换时提供代理。

另请参阅使用Dart中的JavaScript文章。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM