2016-04-16 6 views
3

Ich habe eine Textdatei auf dem Server und ein Objekt in HTML wie folgt gespeichert:lesen Daten in HTML-Object-Tag

<object id="data" type="text/plain" data="test.txt"></object> 

Wie kann ich den Inhalt test.txt in Javascript lesen? Was ich bisher habe ist:

var data = document.getElementByID("data"); 

Aber ich kann nicht herausfinden, wie man das HTML-Dokument innerhalb der Objektmarke lesen.

+1

[hier] (http://stackoverflow.com/a/14446538/5965782) ein Beispiel den Inhalt dann zu lesen, setzen Sie sie – va2ron1

+0

Was Zweck der Verwendung von 'object' Element ist, statt' iframe' Element Textdokument anzeigen? Siehe https://developer.mozilla.org/en-US/docs/Web/HTML/Element/object im Permitted content – guest271314

+0

_ "Aber ich kann nicht herausfinden, wie ich das HTML-Dokument innerhalb des Objekt-Tags lesen kann." _ '.html' Dokument scheint nicht auf' Daten' eingestellt zu sein? 'data' wird auf' .txt' gesetzt, 'type' auf' text/plain'. – guest271314

Antwort

3

Das Tag object muss eine separate Anfrage an den Server stellen und diesen Inhalt dann laden. Inzwischen hat Ihr JavaScript bereits ausgeführt und "vermisst den Bus".

Führen Sie Ihren Code im onload Ereignis der object.

Verwenden Sie dann .contentDocument.body.childNodes[0].innerHTML, um die Textdatei anzuzeigen.

var object = document.getElementByID("data"); 
object.onload = function() { 
    var data = object.contentDocument.body.childNodes[0].innerHTML; 
    // use the data 
}; 
+0

Nach Nach vielen Versuchen habe ich endlich herausgefunden, wie es geht! Google war nicht viel Hilfe für einmal ... 'text/plain' setzt ein 'pre'-Tag in das' Objekt', deshalb ist 'childNodes' da. – 4castle

+0

BTW, für Leute, die versuchen, meinen Code zu testen - ich konnte nicht JSFiddle oder sogar eine 'file: //' Art von HTML-Datei verwenden, um dies zu testen. (Es denkt, dass es XSS geht auf einen Fehler wirft). Ich musste es von meinem "localhost" laden, um es zu testen. – 4castle