Jquery ('#iframeid').load() ausgeführt wird, bevor der Iframe-INHALT (text, Bilder) geladen werden
Ich versuche, Zugriff auf Daten von einem Iframe das Iframe. Zu zwingen, meine javascript-Funktion zu warten, benutze ich jqueries .load-Funktion. Doch mein javascript-code ausgeführt wird, "manchmal" vor der iframe-Inhalt vollständig geladen ist. Durch manchmal meine ich, dass das Verhalten ist unterschiedlich für verschiedene Computer. Auf langsameren Computern wartet er die meisten Zeiten, die für den Fastenden Computer den code bekommt fast immer ausgeführt. Also ich vermute, dass der Internet explorer 8 löst das onload-Ereignis zu früh. Gibt es eine jquery-Funktion zu warten, bis alle Elemente in einem iframe geladen werden?
Dies ist mein code:
function parsePeopleLink(){
try{
//This is where I check if the wanted I frame already exists
if(document.getElementById('isolatedWorkArea') != null) {
if(window.frames[2] != null) {
if(window.frames[2].name == 'isolatedWorkArea') {
//This is where I want the following code only to be executed when the Iframe's content is fully loaded, otherwise I get an access denied error when trying to change Userlinks
$('#isolatedWorkArea').load(function() {
for( var i = 0; i < window.frames.length; i++){
for(var j = 0; j< window.frames[i].document.frames.length; j++){
IframeDocument = window.frames[i].document.frames[j].document;
changeUserLink(findPeopleIDfix(findPeopleID(IframeDocument)),findUserLinks(IframeDocument),8, IframeDocument);
}
}
});
}
else {
throw e; //I know that all the nested else statements are ugly, I just inserted them for testing purposes
}
}
else {
throw e;
}
}
else {
throw e;
}
}
catch(e) {
//alert(e.description);
for(var k = 0; k < window.frames.length; k++)
{
IframeDocument = window.frames[k].document;
changeUserLink(findPeopleIDfix(findPeopleID(IframeDocument)),findUserLinks(IframeDocument),9, IframeDocument);
iframeindex++;
}
}
}
Alle Iframes haben: gleicher port, Protokoll, und src.
Hilfe ist sehr willkommen
InformationsquelleAutor Abhischek | 2011-08-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Javascript keinen Zugriff auf externe Inhalte zu überwachen, wenn es vollständig geladen ist. Wenn Sie Zugriff auf den iframe-Inhalt Sie können einen Anruf hinzufügen, um das übergeordnete Fenster-Funktion, um es zu lösen.
Übergeordnete Seite:
Gerahmte Seite:
Die übergeordnete Seite brauchen würde, um Zugriff auf den iframe-Inhalt zu bestimmen, wenn es geladen ist, das ist nicht möglich. Der gerahmt-Seite, um dadurch eine Funktion in der übergeordneten Seite, mit dem es weiß, dass es geladen ist. Dann könnte man auslösen parsePeopleLink Funktion. Über Bearbeiten mein code oben, um zu zeigen, was ich meine.
das LOAD-Ereignis des iframe Feuer, wenn Inhalt geladen wird, nicht wenn er abgeschlossen ist. Sie benötigen, um ausführen $(document).ready() aus Iframe und eine Funktion aufrufen in das übergeordnete Fenster.
Sorry, aber wie kann ich hängen Sie den html von Iframe ist, bevor es fertig ist? Wenn ich versuche, Zugriff auf den iframe (Attribut des iframe -) ich bekomme "Zugriff verweigert " - Fehler"..
Richtig, das ist, wo das problem ist. Der einzige Weg, Sie können es tun, wenn Sie Zugang zu dem iframed-Seite Quelle in der Lage sein, um hinzuzufügen, dass das script.
InformationsquelleAutor Nick Spiers
Verwendete ich sowas in einem meiner Projekte. Ich habe versucht, eine Datei herunterzuladen, und zeigen Sie Nachricht nach dem download abgeschlossen ist. Diese Art von Sache, die nicht funktioniert in meiner Erfahrung:
Load-Ereignis wird ausgelöst, unmittelbar nachdem iframe in HTML geschrieben ist und nicht, wenn der iframe lädt alle seine Inhalte. Aber dieser code war:
Dieser code wartete auf meine Datei zu laden dann gefeuert load-Ereignis. Ich denke, dies könnte für Sie zu arbeiten.
InformationsquelleAutor Masterhead
Ich wollte zu verstecken, die darauf warten, spinner, div, wenn der i-frame-Inhalt vollständig geladen ist auf IE,
ich versuchte, buchstäblich jede Lösung erwähnt Stackoverflow.Com aber mit nichts funktionierte, wie ich wollte.
Dann hatte ich eine Idee, dass, wenn der i-frame-Inhalt wird vollständig geladen ist, werden die $(Window ) load-Ereignis kann ausgelöst werden.
Und genau das, was passiert ist.
Also schrieb ich dieses kleine script, und arbeitete wie Magie:
Hoffe, das hilft.
InformationsquelleAutor Nada N. Hantouli
Wie/wo werden Sie die Auslösung der laden des iFrames? Wenn Sie prüfen diese Lösungen ein Muster von:
wird berichtet, um zu arbeiten.
Ähnlich berichtete Lösungen:
jQuery .bereit ist eine dynamisch eingefügte iframe
Javascript callback wenn der IFRAME fertig geladen ist?
Edit:
Sieht aus wie Nick Spiers hat die richtige Antwort, oder zumindest ist es ein Teil des Problems. Probleme beim Zugang auf den iframe-Inhalt.
Recht stellt sich heraus, es sind zwei
load
Methoden, basierend auf dem argument der überlastung. Ich füge ein edit über diese.Meinst du wieder die src des Iframe? Um ehrlich zu sein, ich bin eigentlich nicht laden das Iframe selbst. Es ist geladen von einem framework. Also ich bin mir nicht sicher, wie das einstellen der src des iframe wieder wird mir helfen?
Ja das ist nur das Muster von der anderen Frage, die markiert war, als zu arbeiten. Es gilt nicht, wie gut für Ihre situation zu erhalten.
Oh, ich sehe jetzt. Ich bin versucht zu befestigen, das Ereignis load, um das Iframe, aber das problem das ich habe ist jetzt, dass die iframe-ich brauche zu ändern, ist das Kind von einem anderen iframe. Also ich kann nicht mit der iframe-id für den Zugriff auf.. Irgendwelche Vorschläge?
InformationsquelleAutor numbers1311407
Benutzte ich diesen code um sicherzustellen, dass der iFrame (identifiziert durch ID) geladen wurde, bevor die Ausführung meiner Funktion:
InformationsquelleAutor TheLibzter