2016-09-07 2 views
0

Ich möchte von GWT eine JavaScript-Funktion aufrufen, die Element-ID des Elements von UiBinder erstellt akzeptiert. Funktionen schlagen fehl, weil das Element nicht gefunden werden kann. Nach einigen Debuggen fand ich dieses seltsame Verhalten:DOM Element nicht zugänglich von Javascript aus GWT native Funktion

log.info(DOM.getElementById("MyId").getAttribute("id")); 
ScriptInjector.fromString("console.log(document.getElementById(\"MyId\"))").inject(); 
checkMyId(); 
log.info(DOM.getElementById("MyId").getAttribute("id")); 

Ergebnisse in:

MyId 
null 
null 
MyId 

checkId ist definiert als:

public static native void checkMyId()/*-{ 
    console.log(document.getElementById("MyId")); 
}-*/; 

Sowohl ScriptInjector und native Funktionen eingeschränkten Zugriff auf Elemente zu haben scheinen im Vergleich zu . Was ist der Grund für dieses Verhalten? Wie kann ich JavaScript-Funktion aufrufen, damit es auf dieses Element zugreifen kann?

Ich habe versucht mit gwt 2.8.0-beta1 und 2.8.0-rc1 mit den gleichen Ergebnissen.

Antwort

1

GWT JSNI Basics

Wenn das Fenster und Dokumenten-Browser Zugriff auf Objekte aus JSNI, müssen Sie sie als $ wnd und $ doc Referenz sind. Ihr kompiliertes Skript wird in einem verschachtelten Rahmen ausgeführt, und $ wnd und $ doc werden automatisch initialisiert, um korrekt auf das Fenster und das Dokument der Hostseite zu verweisen.

Verwandte Themen