JSNI中$ doc.getElementById(“id”)和document.getElementById(“id”)之间的区别是什么

时间:2011-09-05 13:38:47

标签: dom gwt jsni

我正在GWT应用程序中的本机函数中工作,我尝试了这两个方法:document.getElementById(“id”)返回null但$ doc.getElementById()返回一个有效元素。 这种方法之间的区别(概念上)是什么? 提前谢谢。

2 个答案:

答案 0 :(得分:7)

您的GWT应用的代码在(隐藏的)iframe中运行,因此document引用iframe的文档(以及window iframe的浏览上下文)。因此,GWT初始化变量$doc$wnd,以便您轻松引用加载GWT应用程序的“主页”的文档和浏览上下文( window )。

请注意,链接器决定如何加载已编译的代码,默认值(std)和较新的xsiframe使用iframe,而已弃用的xs会在同一浏览中加载代码上下文(所以$doc == document$wnd == window

答案 1 :(得分:2)

来自GWT JSNI page

  

请注意,代码没有直接在方法内部引用JavaScript窗口对象。从JSNI访问浏览器的窗口和文档对象时,必须分别将它们引用为$ wnd和$ doc。您编译的脚本在嵌套框架中运行,$ wnd和$ doc会自动初始化,以正确引用主页的窗口和文档。