Java 窗口、文档与$wnd、$doc
我知道在GWT中,以下是一些相同的情况: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无法访问浏览器
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)