Come posso inviare e ricevere variabili da e verso le funzioni JavaScript utilizzando DART?
-
12-12-2019 - |
Domanda
Ho usato un po 'di codice (di John Evans) per eseguire JavaScript tra DART:
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')");
.
Ma non sono stato in grado di inviare o restituire variabili.È attualmente possibile?Se no, nessuna idea quando sarà possibile?
Soluzione
Dovrai usare Postmessage per fare questo.Ad esempio se hai convertito la tua variabile in JSON, allora puoi farlo da DART DART
.window.postmessage (jsonmessage, "*");
e poi prendilo dal lato JavaScript come questo
.function recieveMessage(event) { var message = JSON.parse(event.data); : } window.addEventListener("message", receiveMessage, false);
Se è necessario lavorare con cose più avanzate come la comunicazione e le callback a due vie, quindi dare un'occhiata al codice per DartGap in particolare il DevicemessaGerouter classe e Integrazione JavaScript strato.
Altri suggerimenti
è possibile utilizzare dart.js eseguire direttamente le funzioni JavaScript e acquisire il ritorno.
var result = js.context.callMethod('getAnswer', [new js.JsObject.jsify(myargs)]);
.
I tipi di oggetti passati / restituiti sono comunque limitati.Vedere il link sopra per informazioni su cui gli oggetti possono essere passati direttamente.Nota anche che elenca e dovrebbe essere "jsified" prima di essere utilizzato come argomenti per callmethod.
Puoi usare DART: JS . .
Questa libreria fornisce accesso agli oggetti JavaScript da DART, consentendo il codice DART di ottenere proprietà e impostare le proprietà e chiamare i metodi di oggetti JavaScript e invocare le funzioni JavaScript.La biblioteca si prende cura di convertire tra gli oggetti DART e JavaScript ove possibile o fornire ai proxy se la conversione non è possibile.
Vedi anche l'articolo usando JavaScript da DART .