Ich muss den tatsächlichen HTML-Code eines Elements auf einer Webseite erhalten.
Zum Beispiel, wenn der tatsächliche HTML-Code innerhalb des Elements "How to fix"
Dieses Javascript wird ausgeführt
getElementById ('myE'). innerHTML gibt mir "How to fix"
, was die dekodierte Form
Wie bekomme ich "How to fix"
mit JavaScript?
Was du hast, sollte funktionieren:
Elementtest:
%Vor%JavaScript-Test:
%Vor% Sie können es hier ausprobieren . Stellen Sie sicher, dass das Ergebnis, egal wo Sie mit verwenden, nicht
als Leerzeichen anzeigt, was wahrscheinlich der Fall ist. Wenn Sie es irgendwo für HTML anzeigen möchten, müssen Sie es umgehen.
Sie können die tatsächliche HTML-Quelle eines Teils Ihrer Webseite nicht finden.
Wenn Sie einem Webbrowser eine HTML-Seite geben, analysiert er den HTML-Code in einige DOM-Knoten, die für den Browser die endgültige Version Ihres Dokuments darstellen. Das DOM behält die signifikanten Informationen aus dem HTML-ähnlichen, dass Sie das Unicode-Zeichen U + 00A0 Non-Breaking Space vor dem Wort fix
verwendet haben - aber nicht die unerledigten Informationen, die Sie mit einem Entity-Verweis verwendet haben, anstatt nur zu tippen es roh (
).
Wenn Sie den Browser nach dem innerHTML
eines Elementknotens fragen, erhalten Sie nicht die ursprüngliche HTML-Quelle, die zum Erzeugen dieses Knotens analysiert wurde, da diese Informationen nicht mehr vorhanden sind. Stattdessen generiert es neuen HTML-Code aus den im DOM gespeicherten Daten. Der Browser entscheidet, wie diese HTML-Serialisierung formatiert wird. Verschiedene Browser erzeugen unterschiedliche HTML-Dateien, und es ist wahrscheinlich nicht so, wie Sie sie ursprünglich formatiert haben.
Insbesondere
Elementnamen können ober- oder unterseitig sein;
Attribute möglicherweise nicht in der gleichen Reihenfolge wie Sie sie im HTML angegeben;
-Attribut-Quotierung stimmt möglicherweise nicht mit der in Ihrer Quelle überein. IE generiert oft nicht-quoted Attribute, die nicht einmal gültiges HTML sind; Alles, was Sie sicher sein können, ist, dass die innerHTML
erzeugt sicher im selben Browser verwendet werden kann, indem Sie es in das innerHTML
; eines anderen Elements schreiben;
Es darf keine Entity-Referenzen für etwas anderes als Zeichen verwenden, die sonst nicht direkt in den Textinhalt aufgenommen werden könnten: Ampersands, less-thans und Attribut-Wert-Anführungszeichen. Anstatt
zurückzugeben, kann es einfach das rohe Zeichen
geben.
Sie können nicht sehen , dass dies ein nicht-brechendes Leerzeichen ist, aber es ist immer noch eins, und wenn Sie dieses HTML in ein anderes Element einfügen, wird es als eins fungieren. Sie sollten sich nirgends auf ein nicht-brechendes Leerzeichen verlassen können, das von entity-masked zu
ist ... wenn Sie dies tun, können Sie das aus irgendeinem Grund tun:
aber das geht nur von U + 00A0 und nicht von den anderen Tausenden von möglichen Unicode-Zeichen, also ist es ein bisschen fragwürdig.
Wenn Sie wirklich den tatsächlichen HTML-Quelltext Ihrer Seite benötigen, können Sie XMLHttpRequest
auf Ihre eigene URL ( location.href
) setzen und die vollständige, nicht geparste HTML-Quelle in responseText
erhalten. Es gibt fast nie einen guten Grund, dies zu tun.
Tags und Links javascript html