我正在GWT应用程序中的本机函数中工作,我尝试了这两个方法:document.getElementById(“id”)返回null但$ doc.getElementById()返回一个有效元素。 这种方法之间的区别(概念上)是什么? 提前谢谢。
答案 0 :(得分:7)
您的GWT应用的代码在(隐藏的)iframe中运行,因此document
引用iframe的文档(以及window
iframe的浏览上下文)。因此,GWT初始化变量$doc
和$wnd
,以便您轻松引用加载GWT应用程序的“主页”的文档和浏览上下文( window )。
请注意,链接器决定如何加载已编译的代码,默认值(std
)和较新的xsiframe
使用iframe,而已弃用的xs
会在同一浏览中加载代码上下文(所以$doc == document
和$wnd == window
)
答案 1 :(得分:2)
请注意,代码没有直接在方法内部引用JavaScript窗口对象。从JSNI访问浏览器的窗口和文档对象时,必须分别将它们引用为$ wnd和$ doc。您编译的脚本在嵌套框架中运行,$ wnd和$ doc会自动初始化,以正确引用主页的窗口和文档。