Come ottenere javascript in un frame per attendere fino a quando una pagina non viene caricata in un secondo frame

StackOverflow https://stackoverflow.com/questions/1232002

Domanda

Ho due frame in un set di frame - frame [0] contiene uno script che carica una pagina in frame [1] usando

top.frames[1].location.href = 'http://some_location.com/page.html';

e quindi esegue azioni su quella pagina, ad esempio la ricerca di testo all'interno della pagina. Ho bisogno che lo script attenda fino a quando page.html non è stato caricato nel secondo frame prima di farlo, e non posso usare onload = ... nella seconda pagina perché Non ho alcun controllo sulla sua fonte.

C'è un modo per farlo?

È stato utile?

Soluzione

usa l'evento onload dell'elemento FRAME

modifica:

<frame onload = "if( top.frames[1].location.pathname == '/page.html' " ) alert( 'loaded' )";

o se carichi pagine diverse nello stesso frame usa questo:

<frame onload = "if( top.frames[1].location.pathname != 'about:blank' " ) alert( 'loaded' )";

o

<frame src = '/dummyInitial.html' onload = "if( top.frames[1].location.pathname != '/dummyInitial.html' " ) alert( 'loaded' )";

Altri suggerimenti

Beh, lo faccio e funziona.

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 non hai alcun controllo sulla fonte della pagina caricata e, cosa più importante, se proviene da un altro dominio, allora c'è una sola risposta:

Non puoi.

La comunicazione interframe tra domini diversi NON è possibile. E hai bisogno della comunicazione interframe perché avresti bisogno di qualcosa come la funzione ready di jquery nella pagina caricata per determinare se l'intera pagina (il DOM) è caricata.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top