【问题标题】:Which is the difference between $doc.getElementById("id") and document.getElementById("id") in JSNIJSNI 中 $doc.getElementById("id") 和 document.getElementById("id") 的区别是什么
【发布时间】:2011-09-05 22:33:07
【问题描述】:

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

【问题讨论】:

    标签: dom gwt jsni


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      来自GWT JSNI page

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-03-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-20
        • 2015-10-14
        相关资源
        最近更新 更多