Java 窗口、文档与$wnd、$doc

Java 窗口、文档与$wnd、$doc,java,javascript,dom,gwt,Java,Javascript,Dom,Gwt,我知道在GWT中,以下是一些相同的情况: Window and $wnd Document and $doc 除了第一个在Java中使用,第二个在JSNI(JavaScript)中使用之外,还有什么区别吗?窗口是一个包含大量静态方法的类,可以用来获取或设置浏览器窗口的某些属性,但实际上它不是本机浏览器窗口对象。这些方法实现最终是JSNI块,它们使用$wnd变量来设置/获取这些属性。比如Window.alert(),它的实现是$wnd.alert()。请注意,Window.java无法访问浏览器

我知道在GWT中,以下是一些相同的情况:

Window and $wnd
Document and $doc

除了第一个在Java中使用,第二个在JSNI(JavaScript)中使用之外,还有什么区别吗?

窗口是一个包含大量静态方法的类,可以用来获取或设置浏览器窗口的某些属性,但实际上它不是本机浏览器窗口对象。这些方法实现最终是
JSNI
块,它们使用
$wnd
变量来设置/获取这些属性。比如
Window.alert()
,它的实现是
$wnd.alert()
。请注意,
Window.java
无法访问浏览器窗口对象中的所有内容,如
Window.console

GWT使用
$wnd
而不是
窗口
,因为编译后的代码通常在iframe中执行,在这种情况下,
窗口
将引用iframe窗口,而
$wnd
将引用父窗口。
$doc
也是如此,它是iframe中对父文档的引用

另一方面,
Document
是一个java类,它扩展了
JavaScriptObject
,这意味着它是一个类型,基本上意味着它是一个本地javascript对象的特殊包装器,它不修改底层javascript,而是添加一组java方法与之交互。当它通过jsni时可以安全地浇铸

总之,虽然
Document
$doc
在java世界中是不一样的,但在编译时它们是一样的,否则
Window
不是
$wnd
的覆盖,它只是访问浏览器窗口的某些方法的一种方式

尽管GWT编译的代码将委托给本机js对象和方法,但不要试图找到js和java对象之间的相似之处。GWT设计了一个API来使用一组java对象、小部件、模式等开发ajax应用程序。一些对象和方法的命名方式相同,但API几乎不同。不过,还有其他一些项目将java编译成javascript,这两个世界之间具有严格的并行性,比如GWT,它提供了一个名为的实验库,其API几乎与javascript完全相同(它仅适用于Chrome)