Pergunta

Por causa de vários iframes, elementos do navegador XUL, e assim por diante, eu tenho um número de objetos da janela no meu aplicativo XULRunner. Eu estou procurando a melhor maneira de encontrar o objeto janela que um nó especificado pertence ao uso de JavaScript.

Assim, para ser mais específico, dado nó x, eu preciso encontrar o objeto janela específica que contém x.

Foi útil?

Solução

+1 à sua pergunta, que era exatamente o que eu estava procurando e obrigado pela dica dada diretamente, respondendo a si mesmo.

Eu pesquisei um pouco e de acordo com a http://www.quirksmode.org/dom/w3c_html .html cross-browsers tabelas acho que a resposta certa é:

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;
}

Ou talvez ainda melhor:

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

Plz deixe-me saber seus pensamentos.

Outras dicas

I encontrada a combinação de propriedades que foi depois:

node.ownerDocument.defaultView

que retorna o objeto janela que o nó pertence. Note que isso não funciona no IE.

Você pode querer usar auto . eu é uma referência para o documento atual.

De dentro do 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>

Atravessando Janela vários objetos:

Dentro do modelo de objeto de navegador, o objeto janela principal é referido como top . Outros objetos globais estão dispostos em uma estrutura de árvore que nasce de cima. Com uma referência a top , você pode navegar para os outros objetos globais na árvore usando seus nomes e relacionamentos , muito da mesma maneira como você atravessar o DOM .

Quando você tem vários objetos de janela, como você faz no caso de um iframe (de com conjuntos de quadros da velha escola), o quadro tem um atributo de nome . Dada a posição relativa objetos para o objeto janela superior, você pode usar o nome da criança para acessar o objeto.

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

e, em seguida, a partir do contexto da janela do topo:

self.advertisement

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top