簡體   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