Wie man Javascript in einem Rahmen erhalten, zu warten, bis eine Seite in einem zweiten Frame geladen ist

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

Frage

Ich habe zwei Frames in einem Frameset - frame[0] enthält ein Skript, das eine Seite in frame[1] mit

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

und führt dann Aktionen auf dieser Seite, zum Beispiel Text innerhalb der Seite zu suchen. Ich brauche das Skript zu warten, bis page.html, bevor Sie diese im zweiten Frame geladen ist, und ich kann nicht onload=... in der zweiten Seite benutzen, weil ich keine Kontrolle über ihre Quelle haben.

Gibt es eine Möglichkeit, dies zu tun?

War es hilfreich?

Lösung

Verwendung onload Ereignis von FRAME-Elemente

edit:

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

oder, wenn Sie verschiedene Seiten auf die gleiche Rahmen Verwendung laden diese:

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

oder

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

Andere Tipps

Nun, ich weiß das, und es funktioniert.

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

Wenn Sie haben keine Kontrolle über die Quelle der geladenen Seite und was noch wichtiger ist, wenn es aus einer anderen Domäne kommt, dann gibt es nur eine Antwort:

Sie können es nicht.

Interkommunikation zwischen verschiedenen Domänen ist nicht möglich. Und Sie brauchen Inter-Kommunikation, weil Sie so etwas wie jQuery-Ready-Funktion in der geladenen Seite benötigen würden, um zu bestimmen, ob die gesamte Seite (DOM) geladen ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top