代码之家  ›  专栏  ›  技术社区  ›  Joel Anair

如何使用JavaScript获取HTML节点所属的窗口对象?

  •  8
  • Joel Anair  · 技术社区  · 17 年前

    由于有几个iFrame、XUL浏览器元素等等,我的XULRunner应用程序中有许多窗口对象。我正在寻找使用JavaScript查找指定节点所属的窗口对象的最佳方法。

    3 回复  |  直到 9 年前
        1
  •  12
  •   Marco Demaio    15 年前

    +对于你的问题,这正是我想要的,谢谢你直接回答自己给出的提示。

    http://www.quirksmode.org/dom/w3c_html.html 跨浏览器表格我认为正确的答案是:

    function GetOwnerWindow(html_node)
    {
       /*
       ownerDocument is cross-browser, 
       but defaultView works on all browsers except Opera/IE that use parentWinow
       */
       return (html_node.ownerDocument.defaultView) ?
          html_node.ownerDocument.defaultView : 
          html_node.ownerDocument.parentWindow;
    }
    

    return html_node.ownerDocument.defaultView || html_node.ownerDocument.parentWindow;
    

    请让我知道你的想法。

        2
  •  3
  •   Joel Anair    17 年前

    node.ownerDocument.defaultView

    返回节点所属的窗口对象。请注意,这在IE中不起作用。

        3
  •  3
  •   keparo    17 年前

    您可能想使用 . self是对当前文档的引用。

    从iframe中:

    <body>
    <div id="example">Example!</div>
    <script type="text/javascript">
        window.onload = function () {
            var exampleNode = document.getElementById('example');
            exampleNode.bar = function () {
                // The highest window object:
                top;
                // The parent node:
                self;
                // The parent node ( except in IE );
                this.ownerDocument.defaultView;
            };
        };
    </script>
    </body>
    

    遍历多个窗口对象:

    顶部 ,可以使用树中的其他全局对象导航到树中的其他全局对象 遍历DOM

    当您有多个窗口对象时,就像您在iframe(使用老式框架集)中所做的那样,框架具有 名称属性

    <iframe src ="/default.html" name="advertisement"></iframe>

    然后从顶部窗口的上下文中:

    self.advertisement

    推荐文章