Come ottenere il tag <html> HTML con JavaScript / jQuery?


161

Utilizzando $('html').html()posso ottenere il codice HTML all'interno del <html>tag ( <head>, <body>, ecc). Ma come posso ottenere l'HTML effettivo del <html>tag (con attributi)?

In alternativa, è possibile ottenere l'intero HTML della pagina (incluso doctype <html>, ecc.) Con jQuery (o semplicemente il vecchio JavaScript)?

Risposte:


306

Il modo più semplice per ottenere l' htmlelemento nativamente è:

document.documentElement

Ecco il riferimento: https://developer.mozilla.org/en-US/docs/Web/API/Document.documentElement .

AGGIORNAMENTO: Per afferrare l' htmlelemento come stringa, dovresti:

document.documentElement.outerHTML

1
Vedi anche questa domanda per maggiori informazioni sulla documentElementcompatibilità del browser: stackoverflow.com/q/11391827/177710 .
Oliver,

Con quale frequenza ricevi riferimento all'elemento html !? Non penso che le prestazioni dovrebbero essere una preoccupazione, in generale. Comunque, questa è in realtà la risposta migliore, ma è arrivata in MODO dopo il premio.
posit lab

42

Ecco come ottenere l'elemento DOM HTML solo con JS:

var htmlElement = document.getElementsByTagName("html")[0];

o

var htmlElement = document.querySelector("html");

E se vuoi usare jQuery per ottenere attributi da esso ...

$(htmlElement).attr(INSERT-ATTRIBUTE-NAME);

La tua risposta sarebbe notevolmente migliore se tu potessi spiegare perché questo ha risposto alla domanda. Inoltre, evidenzia il codice e fai clic sul {}pulsante o premi ctrl + k per contrassegnarlo come codice.
Ben

18

Oltre ad alcune delle altre risposte, puoi anche accedere all'elemento HTML tramite:

var htmlEl = document.body.parentNode;

Quindi potresti ottenere il contenuto HTML interno:

var inner = htmlEl.innerHTML;

In questo modo sembra essere leggermente più veloce . Se stai semplicemente ottenendo l'elemento HTML, tuttavia, document.body.parentNodesembra essere un po 'più veloce .

Dopo avere l'elemento HTML, è possibile pasticciare con gli attributi con i metodi getAttributee setAttribute.

Per il DOCTYPE, è possibile utilizzare document.doctype, che è stato elaborato in questa domanda .


4
Proprio come una nota: questo fallirà se il corpo non è ancora disponibile sul documento.
DataDink,

3
In tal caso, document.head.parentNodefunzionerà comunque se c'è un elemento head.
mahemoff,

15

In jQuery:

var html_string = $('html').outerHTML()

In Javascript semplice:

var html_string = document.documentElement.outerHTML

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.