4 Stimmen

IFrame-Inhalt mit JavaScript lesen

Ok, das ist mein erstes Mal, dass ich mich ernsthaft mit IFrames beschäftige und ich scheine ein paar Dinge nicht zu verstehen:

Zunächst der Beispielcode, mit dem ich teste:

<head>
<script type="text/javascript">
function init(){
  console.log("IFrame content: " + window.frames['i1'].document.getElementsByTagName('body')[0].innerHTML);
}
</script>
</head>
<body onload="init();">
<iframe name="i1" src="foo.txt"/>
</body>

die Datei "foo.txt" sieht folgendermaßen aus:

sample text file

Fragen:

1) Der iframe scheint sich wie ein HTML-Dokument zu verhalten und der Text der Datei ist stattdessen Teil des Textkörpers. Warum? Ist es eine Regel, dass ein IFrame ein HTML-Dokument sein muss. Ist es nicht möglich, dass der Inhalt eines iframe nur einfacher Text ist?

2) Der Inhalt der Datei wird in eine vor Tag aus irgendeinem Grund. Warum ist das so? Ist das immer der Fall?

3) Meine Zugriffsmethode im Javascript funktioniert, aber gibt es eine andere Alternative? [native js Lösungen bitte] Wenn der Inhalt in einem vor Tag immer dann muss ich tatsächlich innerhalb der vor Tag zu verwenden, anstatt die innerHTML

8voto

keldonrush Punkte 71

Ich hatte Schwierigkeiten, den Inhalt einer TXT-Datei abzurufen, die die src eines iframe war. Dies ist meine Lösung:

document.getElementById( 'iframeID' ).contentWindow.document.body.innerText

4voto

Sean Kinsey Punkte 36651

innerHTML tut no Rückgabe der genau Inhalt eines Elements, ist eine nicht standardisierte Methode, die HTML zurückgibt, das gleichwertig zum eigentlichen Inhalt, und in HTML ist das Äquivalent zum reinen Text <pre>foo...</pre> .

Vielleicht haben Sie mehr Glück mit dem innerText Eigentum.

0 Stimmen

+1 denn in HTML lautet das Äquivalent zu einfachem Text <pre>foo...</pre>.

0voto

Dormilich Punkte 927

1) Der iframe scheint sich wie ein HTML-Dokument zu verhalten und der Text der Datei ist stattdessen Teil des Textkörpers. Warum?

Sie verwenden die DOM/JS-Schnittstelle. Dies funktioniert nur, wenn der Inhalt als HTML/XML behandelt wird.

0voto

Nikita Rybak Punkte 66202

So behandeln Browser Textdateien, weil sie auf diese Weise "besser" aussehen (nicht nur innerhalb eines iframe). Browser können viele Dateitypen verarbeiten, und es ist unzumutbar, von ihnen zu erwarten, dass sie alles in Rohform anzeigen, oder? Da es bei Browserseiten (und iframes) um die Präsentation geht, verwendet niemand iframes wirklich zur Konfiguration oder zum Lesen von Rohdaten von der Festplatte.

Wenn Sie die volle Kontrolle über die Darstellung haben wollen, ändern Sie einfach den Dateityp in html und es wird wie html behandelt. (insbesondere wird dadurch das "pre"-Problem gelöst)

Wird dies Ihre Fragen beantworten?

0 Stimmen

Ich glaube nicht, dass eine Änderung des Dateityps in html helfen würde. Mein Beispiel hatte nur einen sehr einfachen Text, aber wenn dieser Text vom Benutzer generiert wird, dann könnte er möglicherweise HTML/Javascript enthalten. Erlauben, dass als HTML rendern würde bis zu CSRF zu öffnen.

0 Stimmen

Können Sie mir erklären, was Sie damit bezwecken?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X