Ich weiß, dass die folgende ist eine Art derselben in GWT:
Window and $wnd
Document and $doc
Gibt es Unterschiede, neben, dass die erste in Java und die zweite verwendet wird in JSNI (JavaScript)?
Ich weiß, dass die folgende ist eine Art derselben in GWT:
Window and $wnd
Document and $doc
Gibt es Unterschiede, neben, dass die erste in Java und die zweite verwendet wird in JSNI (JavaScript)?
Window
ist eine Klasse viele statische Methoden, die Sie zum Abrufen oder Festlegen bestimmter Eigenschaften des Browserfensters verwenden können, aber tatsächlich ist es nicht das native Browserfensterobjekt. Diese Methodenimplementierungen sind schließlich JSNI
Blöcke, die die $wnd
Variable verwenden, um diese Eigenschaften festzulegen/abzurufen. Wie Window.alert()
deren Implementierung wäre $wnd.alert()
. Beachten Sie, dass Window.java
keinen Zugriff hat für alles, was im Fenster Objekt Browser wie window.console
usw.
GWT verwendet $wnd
statt window
weil kompilierten Code normalerweise in einem Iframe ausgeführt wird, und in diesem Zusammenhang window
das iframe Fenster verweisen während $wnd
wird das übergeordnete Fenster verweisen. Das gleiche passiert mit $doc
, die eine Referenz im iframe zum übergeordneten Dokument ist.
In der anderen Seite Document
ist eine Java-Klasse, die JavaScriptObject
erstreckt, bedeutet dies, dass es sich um eine Overlay Art, die im Grunde bedeutet, dass es sich um eine spezielle Wrapper für ein native Javascript-Objekt ist, ist es das zugrunde liegende JavaScript nicht ändern, sondern ein fügt eine Reihe von Java-Methoden, um damit zu interagieren. Es kann sicher gegossen werden, wenn es an jsni übergeben wird.
Zusammengefasst obwohl Document
und $doc
in Java-Welt nicht gleich sind, wenn es kompiliert wird sie gleich sein, sonst Window
es ist nicht eine Überlagerung von $wnd
, es ist nur eine Möglichkeit, bestimmte Methoden des Browsers zugreifen Fenster.
Obwohl GWT Codedelegaten für native js-Objekte und -Methoden kompiliert hat, versuchen Sie nicht, Ähnlichkeiten zwischen js- und Java-Objekten zu finden. GWT hat eine API entwickelt, um AJAX-Anwendungen mit einer Reihe von Java-Objekten, Widgets, Mustern usw. zu entwickeln. Einige Objekte und Methoden werden auf die gleiche Weise benannt, aber fast die API ist anders. Es gibt jedoch andere Projekte, die Java zu Javascript kompilieren, das eine starre Parallelität zwischen beiden Welten wie ST-JS hat, und GWT stellt eine experimentelle Bibliothek zur Verfügung, die Elemental genannt wird, deren API fast identisch mit Javascript ist (es ist nur für Chrome verfügbar).