Quando usar a janela.Abrir / janela.pai / janela.superior
Em JavaScript quando usar window.opener
/ window.parent
/ window.top
?
4 answers
-
window.opener
refere-se à janela que chamouwindow.open( ... )
para abrir a janela da qual se chama -
window.parent
refere-se ao pai de uma janela num<frame>
ou<iframe>
-
window.top
refere-se à janela mais alta a partir de uma janela aninhada numa ou mais camadas de<iframe>
sub-janelas
null
(ou talvez undefined
) quando não forem relevantes para a situação da janela de referência. ("Janela de referência" significa a janela em cujo contexto o código de JavaScript é executar.)
window.opener
https://developer.mozilla.org/en-US/docs/Web/API/Window.opener
window.parent
https://developer.mozilla.org/en-US/docs/Web/API/Window.parent
Usei isto principalmente ao trabalhar com o IFrames que precisam de comunicar com o objecto da janela que os contém.
window.top
https://developer.mozilla.org/en-US/docs/Web/API/Window.top
Isto é útil para garantir que está a interagir com a janela do navegador de nível superior. Você pode usá-lo para evitar outro site da iframing seu site, entre outras coisas.
Se adicionar mais detalhes à sua pergunta, posso fornecer outros exemplos mais relevantes.
Actualização:
Há algumas maneiras de lidar com a sua situação.
Tem a seguinte estrutura:
- Janela Principal
- janela 1
- Janela 2 Aberta Pela Janela 1
- janela 1
Quando a janela 1 executa o código para abrir a janela 2, Depois de criar a janela 2, ter a janela 1 define uma propriedade na janela 2 que referencia o abre-janelas 1.
Por isso, se "childwindow" é você variável para o objecto janela 2 janela, e "window" é a variável para o objecto janela 1 janela. Depois de abrir a janela 2, mas antes de fechar a janela 1, Faça uma atribuição semelhante a esta:
childwindow.appMainWindow = window.opener
Depois de fazer a atribuição acima, feche a janela 1.
Depois, a partir do código que está a correr dentro da janela 2, deverá ser capaz de usar
window.appMainWindow
para referenciar a janela principal, o objecto da janela.
Top, pai, opener (assim como janela, self e iframe) são todos os objetos da janela.
-
window.opener
- > devolve a janela que abre ou lança a janela actual. -
window.top
- > devolve a janela mais alta, se estiver a usar molduras, esta é a janela de frameset, se não estiver a usar molduras, esta é a mesma que a janela ou o self. -
window.parent
- > devolve a moldura-mãe da moldura ou iframe actual. A moldura-mãe pode ser a janela de frameset ou outra moldura, se você tem molduras aninhadas. Se não usar molduras, o pai é o mesmo que a janela actual ou o self