iFrame.document.innerHTML?
iframe
- javascript
Hi,
wie komme ich browserübergreifend(?) an innerHTML eines iFrame Objekts?
Also wenn da <iframe src="test.html" id="i">.. steht, würde ich gerne mit alert(document.getElementById('i').document.innerHTML); o.ä. den Inhalt der test.html ausgeben lassen.
An .URL komme ich ran; aber es muss doch auch möglich sein, denn gesamten Inhalt des iFrames abzufragen...
Thx
Hallo,
Also wenn da <iframe src="test.html" id="i">.. steht, würde ich gerne mit alert(document.getElementById('i').document.innerHTML); o.ä. den Inhalt der test.html ausgeben lassen.
document hat keine Eigenschaft innerHTML, aber document.documentElement (das ist das html-Wurzelelement) oder document.body (das body-Element).
Und document als Eigenschaft des iframe-Elementobjektes gibt es nicht im Firefox. Dafür aber contentDocument.
var iframe = document.getElementById('i');
var iframeDocument = iframe.contentDocument || iframe.document;
alert(iframeDocument.documentElement.innerHTML);
alert(iframeDocument.body.innerHTML);
(Oder outerHTML, geht aber nicht in allen Browsern.)
Mathias
Hallo Mathias,
var iframe = document.getElementById('i');
var iframeDocument = iframe.contentDocument || iframe.document;
^^^ würde ich eher so formulieren:
var iframeDocument = iframe.contentDocument || iframe.contentWindow.document;
weil sonst iframeDocument.body.innerHTML im IE 7 beispielsweise ergibt:
\---------------------------
Windows Internet Explorer
\---------------------------
<IFRAME id=ifr name=ifr src="dummy.html" width=640 height=480></IFRAME>
\---------------------------
OK
\---------------------------
Grüße,
Thomas
Hallo,
Du hast völlig Recht. document verweist auf das »ownerDocument«. Ich weiß auch nicht, wie ich auf den Irrglauben komme, document würde bei iframes auf das eingebundene Dokument verweisen. Das habe ich wohl an einigen Stellen falsch empfohlen.
Mathias
hi und danke erstmal. das klappt soweit schon...
Aber: wenn ich in dem iframe eine PHP Datei lade, welche weder <html>, noch <body> o.ä. ausgibt, so teilt mir die Abfrage von innerHTML mit, dass wohl der Browser (IE und auch FF) diese Tags hinzugefügt hat.
Die Rückgabe in dem iFrame würde ich aber gerne ohne Tags in JS einlesen...
How to?
Hallo,
wenn ich in dem iframe eine PHP Datei lade, welche weder <html>, noch <body> o.ä. ausgibt, so teilt mir die Abfrage von innerHTML mit, dass wohl der Browser (IE und auch FF) diese Tags hinzugefügt hat.
Sende die Ressource, die im iframe dargestellt wird, mit dem Content-Type text/plain, nicht text/html.
header('Content-Type: text/plain');
Oder verwende z.B. innerText (Browser außer Firefox) bzw. textContent (Firefox) statt innerHTML.
Die Rückgabe in dem iFrame würde ich aber gerne ohne Tags in JS einlesen...
Kennst du XMLHttpRequest?
Mathias