iframe dynamisch ein onLoad-Event zuweisen
basti_p
- javascript
Hallo,
folgendes Problem:
ich möchte einem Dokument in einem iFrame mit Javascript ein onLoad-Event zuweisen:
var doc;
var doc = document.getElementById("editContentFrame").contentWindow || document.getElementById("editContentFrame").contentDocument;
if (doc.document) {
doc = doc.document;
if(!doc.body){
//wenn doc.body noch nicht vorhanden, nochmal...
window.setTimeout("PAGES_makeEditable()",500);
}
else{
doc.body.onLoad=new Function("alert('haha')");
}
Die else-Abfrage wird korrekt angesprungen (mit alert getestet), doc.body ist also vorhanden. Leider bewirkt die onLoad-Zuweisung nichts - keine Fehlermeldung aber leider auch kein alert('haha')...
Wo liegt der Fehler?
Ich teste mit Firefox 2.0.0.11
Danke und Grüße Basti
Hi,
doc.body.onLoad=new Function("alert('haha')");
JavaScript behandelt Bezeichner case sensitive - und die Eventhandler-Attribute sind durchgaengig klein zu schreiben.
MfG ChrisB
Hallo,
vielen Dank - aber leider hilft die Kleinschreibung auch nichts:-(
Ich hatte erst den Verdacht, dass das oload-Event vielleicht schon vorbei ist - aber ein alert(doc.body.childNodes.length); direkt vor der onload-Zuweisung gibt 0 aus - und das ist wirklich zu wenig (derselbe Auruf 500ms später ergibt die korrekte Anzahl).
Grüße Basti
Hi,
vielen Dank - aber leider hilft die Kleinschreibung auch nichts:-(
Ich hatte erst den Verdacht, dass das oload-Event vielleicht schon vorbei ist - aber ein alert(doc.body.childNodes.length); direkt vor der onload-Zuweisung gibt 0 aus - und das ist wirklich zu wenig (derselbe Auruf 500ms später ergibt die korrekte Anzahl).
Versuch mal, den onload-Event des Fensterobjektes zu nutzen, statt den des Bodys.
MfG ChrisB
Hi,
Versuch mal, den onload-Event des Fensterobjektes zu nutzen, statt den des Bodys.
P.S.: Dann kannst du dir auch das Gehampel mit Ueberpruefung auf Vorhandensein des Bodys und Timeouts sparen - das entsprechende Fensterobjekt gibt's naemlich schon, bevor du ueberhaupt die Seite hineinlaedst.
MfG ChrisB
Hallo,
P.S.: Dann kannst du dir auch das Gehampel mit Ueberpruefung auf Vorhandensein des Bodys und Timeouts sparen - das entsprechende Fensterobjekt gibt's naemlich schon, bevor du ueberhaupt die Seite hineinlaedst.
Eben: ich brauche aber die Benachrichtigung, dass ich auf die Elemente des _geladenen_ Dokumentes zugreifen kann.
Grüße Basti
Hallo,
hmm - diese onload-Zuweisung wird zwar ausgeführt - wenn ich mir da aber die Anzahl der body-childNodes ausgeben lasse, bekomme ich wieder 0 - der body ist an dieser Stelle also noch nicht komplett.
Grüße Basti
Hi,
hmm - diese onload-Zuweisung wird zwar ausgeführt - wenn ich mir da aber die Anzahl der body-childNodes ausgeben lasse, bekomme ich wieder 0 - der body ist an dieser Stelle also noch nicht komplett.
In welcher Reihenfolge machst du denn das ganze - erst onload-Event zuweisen, und dann Seite in den Iframe laden - oder umgekehrt?
MfG ChrisB
Hallo,
ich erzeuge den iFrame mit JavaScript sprich: ich lade eine php-Datei via Ajax und innerHTML in einen div-Container:
...
if(xmlHTTP.readyState==4){
var div=document.createElement("div");
div.innerHTML=xmlHTTP.responseText;
document.getElementById(target_id).appendChild(div);
}
...
In der php-Datei ist der iFrame definiert:
<iframe id="editContentFrame" style="width: 100%;border: 0" frameborder="0" src="../index.php"></iframe>
Dann kommt die onload-Anweisung.
Grüße Basti
Hi,
In der php-Datei ist der iFrame definiert:
<iframe id="editContentFrame" style="width: 100%;border: 0" frameborder="0" src="../index.php"></iframe>
Und wenn du den Eventhandler mal als HTML-Attribut in diesem Iframe-Element notierst?
(Just guessing, ich weiss nicht, ob das funktioniert ...)
MfG ChrisB
Hallo,
Danke für den Tipp: ein alert direkt im body-Tag wird vor allen anderen ausgeführt - d.h., das onload-Event ist schon vorbei, die Elemente aber noch nicht in der übergeordneten Seite im DOM verfügbar.
Grüße Basti