Gibt es in JS eine Möglichkeit, den gesamten HTML-Code innerhalb der HTML- Tags als Zeichenfolge abzurufen?
document.documentElement.??
javascript
html
document
tostring
Der Blitz
quelle
quelle
document.body.parentElement.innerHTML
Antworten:
MS hat die Eigenschaften
outerHTML
und vorinnerHTML
einiger Zeit hinzugefügt .Nach MDN ,
outerHTML
wird in Firefox 11, Chrome 0.2, Internet Explorer 4.0, Opera 7, Safari 1.3, Android, Firefox Mobile 11, IE Mobile, Opera Mobile und Safari Mobile unterstützt.outerHTML
befindet sich in der DOM-Analyse- und Serialisierungsspezifikation .Informationen zur Browserkompatibilität finden Sie unter quirksmode . Alle Unterstützung
innerHTML
.quelle
Du kannst tun
in Browsern, die neuer als IE 9 sind
Siehe https://caniuse.com/#feat=xml-serializer
quelle
html
Tag Attribute hinzugefügt, die der Server nie gesendet hat :(Ich glaube, das
document.documentElement.outerHTML
sollte ich für Sie zurückgeben.Nach MDN ,
outerHTML
wird in Firefox 11, Chrome 0.2, Internet Explorer 4.0, Opera 7, Safari 1.3, Android, Firefox Mobile 11, IE Mobile, Opera Mobile und Safari Mobile unterstützt.outerHTML
befindet sich in der DOM-Analyse- und Serialisierungsspezifikation .Auf der MSDN-Seite in der
outerHTML
Eigenschaft wird darauf hingewiesen, dass sie in IE 5+ unterstützt wird. Colins Antwort verweist auf die W3C-Quirksmode-Seite, die einen guten Vergleich der Cross-Browser-Kompatibilität bietet (auch für andere DOM-Funktionen).quelle
Ich habe die verschiedenen Antworten ausprobiert, um zu sehen, was zurückgegeben wird. Ich verwende die neueste Version von Chrome.
Der Vorschlag
document.documentElement.innerHTML;
kehrte zurück<head> ... </body>
Gabys Vorschlag
document.getElementsByTagName('html')[0].innerHTML;
gab dasselbe zurück.Der Vorschlag
document.documentElement.outerHTML;
kehrte zurück,<html><head> ... </body></html>
was alles außer dem "Doctype" ist.Sie können das doctype-Objekt mit abrufen.
document.doctype;
Dies gibt ein Objekt zurück, keine Zeichenfolge. Wenn Sie also die Details als Zeichenfolgen für alle doctype-Typen bis einschließlich HTML5 extrahieren müssen, wird hier beschrieben: DocType eines HTML als Zeichenfolge mit Javascript abrufenIch wollte nur HTML5, daher reichte mir Folgendes, um das gesamte Dokument zu erstellen:
alert('<!DOCTYPE HTML>' + '\n' + document.documentElement.outerHTML);
quelle
Sie können auch tun:
Sie erhalten nicht das Doctype- oder HTML-Tag, sondern alles andere ...
quelle
quelle
outerHTML
befindet sich in der DOM-Analyse- und Serialisierungsspezifikation .Wahrscheinlich nur IE:
für FF ab 1.0:
kann in FF arbeiten. (Zeigt die SEHR ERSTEN 300 Zeichen vom SEHREN Anfang des Quelltextes an, meistens Doctype-Defs.)
ABER beachten Sie, dass der normale "Speichern unter" -Dialog von FF möglicherweise NICHT den aktuellen Status der Seite speichert, sondern den ursprünglich geladenen X / h / tml-Quelltext !! (Ein POST-up von ss in eine temporäre Datei und eine Umleitung zu dieser kann einen speicherbaren Quelltext mit den zuvor vorgenommenen Änderungen / Bearbeitungen liefern.)
Obwohl FF durch eine gute Wiederherstellung auf "back" und eine NICE-Aufnahme von Zuständen / Werten in "Save (as) ..." für eingabeähnliche FELDER, Textbereiche usw. überrascht , nicht durch Elemente in contenteditable / designMode ...
Wenn NICHT ein xhtml- resp. XML-Datei (MIME-Typ, NICHT nur Dateinamenerweiterung!), kann man document.open/write/close verwenden, um die App zu setzen. Inhalt auf der Quellenebene, der im Speicherdialog des Benutzers über das Menü Datei / Speichern von FF gespeichert wird. siehe: http://www.w3.org/MarkUp/2004/xhtml-faq#docwrite resp.
https://developer.mozilla.org/en-US/docs/Web/API/document.write
Versuchen Sie neutral zu Fragen von X (ht) ML eine "Ansichtsquelle: http: // ..." als Wert des src-Attributs eines (vom Skript erstellten!?) Iframes, - um auf einen Iframes- zuzugreifen. Dokument in FF:
<iframe-elementnode>.contentDocument
, siehe Google "mdn contentDocument" für ca. Mitglieder, wie zum Beispiel 'textContent'. »Das habe ich vor Jahren und möchte nicht danach kriechen. Wenn es immer noch dringend nötig ist, erwähne dies, damit ich eintauchen kann ...quelle
quelle
<html ...>
Tag nicht zurück .Verwenden Sie
document.documentElement
.Dieselbe Frage wurde hier beantwortet: https://stackoverflow.com/a/7289396/2164160
quelle
.outerHTML
und bekommendocument.doctype
, und die vollständigste Antwort ist die von Paolo .Um auch Dinge außerhalb der Deklaration
<html>...</html>
, vor allem der<!DOCTYPE ...>
Deklaration, zu erhalten, können Sie document.childNodes durchgehen und jede in eine Zeichenfolge umwandeln:Ich habe diesen Code als document-Outerhtml auf npm veröffentlicht.
Bearbeiten Beachten Sie, dass der obige Code von einer Funktion abhängt
doctypeToString
. Die Implementierung könnte wie folgt aussehen (der folgende Code wird auf npm als doctype-to-string veröffentlicht ):quelle
Ich benutze immer
Wahrscheinlich nicht der richtige Weg, aber ich kann es verstehen, wenn ich es sehe.
quelle
<html...>
Tag nicht zurückgegeben wird .Ich brauche nur Doctype HTML und sollte in IE11, Edge und Chrome gut funktionieren. Ich habe unten Code verwendet, es funktioniert gut.
und in Ihrem Ankertag so verwenden.
Beispiel
quelle
Ich verwende
outerHTML
für Elemente (den<html>
Hauptcontainer) undXMLSerializer
für alles andere, einschließlich<!DOCTYPE>
zufälliger Kommentare außerhalb des<html>
Containers oder was auch immer sonst dort sein könnte. Es scheint, dass Leerzeichen außerhalb des<html>
Elements nicht beibehalten werden , daher füge ich standardmäßig Zeilenumbrüche mit hinzusep="\n"
.quelle
Sie müssen das Dokument childNodes durchlaufen und den OuterHTML-Inhalt abrufen.
in VBA sieht es so aus
Auf diese Weise können Sie alle Elemente der Webseite abrufen, einschließlich des Knotens <! DOCTYPE>, falls vorhanden
quelle
Der richtige Weg ist eigentlich:
webBrowser1.DocumentText
quelle