我一直在使用一些代码(由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')");
Run Code Online (Sandbox Code Playgroud)
但我无法发送或返回变量.这目前可能吗?如果没有,任何想法何时成为可能?
您将需要使用postMessage来执行此操作.例如,如果您已将变量转换为JSON,则可以从Dart内部执行此操作
window.postMessage(jsonMessage,"*");
然后像这样从JavaScript端拿起它
function recieveMessage(event) {
var message = JSON.parse(event.data);
:
}
window.addEventListener("message", receiveMessage, false);
Run Code Online (Sandbox Code Playgroud)
如果您需要处理更高级的事情,例如双向通信和回调,那么请查看DartGap的代码,特别是DeviceMessageRouter类和javascript集成层.
| 归档时间: |
|
| 查看次数: |
220 次 |
| 最近记录: |