Como obter o HTML da tag com JavaScript / jQuery?

Usando $('html').html() eu posso pegar o HTML dentro da tag ( , , etc.). Mas como posso obter o HTML real da tag (com atributos)?

Alternativamente, é possível obter o HTML inteiro da página (incluindo doctype, , etc.) com jQuery (ou JavaScript antigo)?

A maneira mais simples de obter o elemento html forma nativa é:

 document.documentElement 

Aqui está a referência: https://developer.mozilla.org/en-US/docs/Web/API/Document.documentElement .

ATUALIZAÇÃO: Para pegar o elemento html como uma string que você faria:

 document.documentElement.outerHTML 

Isto é como obter o elemento DOM html puramente com JS:

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

ou

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

E se você quiser usar o jQuery para obter atributos dele …

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

Além de algumas das outras respostas, você também pode acessar o elemento HTML via:

 var htmlEl = document.body.parentNode; 

Então você pode obter o conteúdo HTML interno:

 var inner = htmlEl.innerHTML; 

Fazer isso dessa maneira parece ser ligeiramente mais rápido . Se você está apenas obtendo o elemento HTML, no entanto, document.body.parentNode parece ser um pouco mais rápido .

Depois de ter o elemento HTML, você pode mexer com os atributos com os methods getAttribute e setAttribute .

Para o DOCTYPE, você poderia usar document.doctype , que foi elaborado nesta questão .

Em jQuery:

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

Em JavaScript simples:

 var html_string = document.documentElement.outerHTML 

Se você deseja obter um atributo de um elemento HTML com jQuery, você pode usar .attr();

so $('html').attr('someAttribute'); lhe dará o valor de someAttribute do elemento html

http://api.jquery.com/attr/

Além disso:

existe um plugin jQuery aqui: http://plugins.jquery.com/project/getAttributes

que permite obter todos os atributos de um elemento HTML