Como chegar javascript em um quadro que esperar até a página foi carregada em um segundo quadro
-
22-07-2019 - |
Pergunta
Eu tenho dois quadros em um conjunto de quadros - frame[0]
contém um script que carrega uma página em frame[1]
usando
top.frames[1].location.href = 'http://some_location.com/page.html';
e, em seguida, executa ações nessa página, por exemplo, pesquisar texto na página. Eu preciso o script que esperar até page.html
foi carregado no segundo quadro antes de fazer isso, e eu não posso usar onload=...
na segunda página, porque eu não tenho nenhum controle sobre sua fonte.
Existe uma maneira de fazer isso?
Solução
uso caso de elemento QUADRO onLoad
edit:
<frame onload = "if( top.frames[1].location.pathname == '/page.html' " ) alert( 'loaded' )";
ou se você carregar páginas diferentes para o mesmo uso quadro seguinte:
<frame onload = "if( top.frames[1].location.pathname != 'about:blank' " ) alert( 'loaded' )";
ou
<frame src = '/dummyInitial.html' onload = "if( top.frames[1].location.pathname != '/dummyInitial.html' " ) alert( 'loaded' )";
Outras dicas
Bem, eu fazer isso, e ele funciona.
var idInterval;
function callPage()
{ top.main.document.location.href = somepage.aspx;
document.getElementById('divLoading').style.visibility ="visible";
idInterval = setInterval("validaFrameMain()",50);
}
//look if the frame page is complete load
function validaFrameMain()
{
if (top.main.document.readyState != "complete")
{document.getElementById('divLoading').style.visibility ="visible";}
else
{ document.getElementById('divLoading').style.visibility ="hidden";;
clearInterval(idInterval);
idInterval = nothing;
}
}
Se você não tem controle sobre a fonte da página carregada e mais importante, se for proveniente de outro domínio, então só há uma resposta:
Você não pode.
comunicação Interframe entre diferentes domínios não é possível. E você precisa InterFrame comunicação, porque você precisaria de algo como função pronto jQuery na página carregada para determinar se toda a página (DOM) é carregado.