Os quadros são usados para armazenar subpáginas, IFRAMES ou FRAMESSTS. O objeto da janela é um objeto global e todas as funções e objetos na página estão em seu escopo.
1. Pai representa a janela dos pais. Se houver várias camadas de ninho na janela dos pais, o topo representa a janela dos pais de nível superior.
O eu representa a própria janela.
if (self == top) {//} apenas determine se a janela está no nível superior se (self == pai) {} //2.1. Página dos pais acessa os elementos da página da criança. A idéia é que todos os elementos da subpagem estejam em sua janela.
É melhor definir o atributo de nome para o quadro, que é a operação mais conveniente. como
<iframe name = "test" src = "child.html"> </frame>
Se você quiser obter o elemento com o 'menu' do ID no Child.html, pode escrever assim:
window.frames ["teste"]. document.getElementById ('menu'); // Como todas as funções são armazenadas no objeto da janela, a janela inicial pode ser removida: quadros ["teste"]. Document.getElementById ('menu'); // No navegador, o atributo de nome do quadro é equivalente ao objeto de janela da subpagem por padrão, para que possa ser mais abreviado: test.document.getElementById ('menu');2.2 Página dos pais Acesse funções ou objetos da página da criança. As funções e objetos da subpagem estão em seus objetos de janela, o mesmo que acima, a chave é obter o objeto.
// Se Child.html definir a função do showMESG e precisar ser chamado no pai, então escreva janela.frames ['teste']. ShowMesg (); // abreviado de forma test.showmesg (); // Da mesma forma, o objeto também acessa alerta (test.person);
2.3 Outras maneiras de obter documentos.
Primeiro, use 'document.getElementById ()' ou 'document.getElementsByTagName ()' para obter o quadro como o elemento no documento e depois acessar seu atributo ContentDocument/ContentWindow (iframe, específico do quadro), o primeiro é o IE7-NOT suportado e o segundo não é suportado.
<iframe id = "testId" src = "child.html"> </frame> // ===== var doc = document.getElementById ('testId'); // ou var doc = document.getElementsByTagName ('iframe') [0]; Então var winordoc = doc.contentDocument || doc.contentWindow; // escolha um dos dois se (winordoc.document) winordoc = winordoc.document; winordoc.getElementById ('menu'); // Se você precisar de um objeto de janela, escreva assim: if (winordoc.defaultView) winordoc = winordoc.defaultView;3.1 Página infantil Acesse elementos da página dos pais. A mesma ideia que 2.1, primeiro obtenha a janela dos pais. Objeto de documento
parent.window.document.getElementById ('parentmenu'); // abreviação parent.document.getElementById ('parentmenu');3.2. A página da criança acessa a função ou objeto da página pai. A mesma ideia que 2.2, primeiro obtenha o objeto da janela dos pais.
parent.parentfunction ();
Finalmente, vamos mencionar a mesma estratégia de origem do JS, ou seja, o código JS localizado no site A não permite o acesso ao conteúdo localizado no site B, mesmo que o código se origine no site B. Se o quadro for uma página de outros sites, então ao acessá -lo de acordo com o método acima, o navegador deve solicitar: 'sem permissão'.