Bagaimana cara mendapatkan tag HTML <html> dengan JavaScript / jQuery?

161

Menggunakan $('html').html()saya bisa mendapatkan HTML dalam <html>tag ( <head>, <body>, dll). Tetapi bagaimana saya bisa mendapatkan HTML <html>tag yang sebenarnya (dengan atribut)?

Atau, apakah mungkin untuk mendapatkan seluruh HTML halaman (termasuk doctype <html>,, dll.) Dengan jQuery (atau JavaScript lama biasa)?

Justin Stayton
sumber

Jawaban:

305

Cara paling sederhana untuk mendapatkan htmlelemen secara native adalah:

document.documentElement

Berikut rujukannya: https://developer.mozilla.org/en-US/docs/Web/API/Document.documentElement .

PEMBARUAN: Untuk kemudian mengambil htmlelemen sebagai string yang akan Anda lakukan:

document.documentElement.outerHTML
Michael
sumber
1
Lihat juga pertanyaan ini untuk info lebih lanjut tentang documentElementkompatibilitas browser: stackoverflow.com/q/11391827/177710 .
Oliver
Seberapa sering Anda mendapatkan referensi ke elemen html !? Saya tidak berpikir kinerja harus menjadi perhatian, secara umum. Bagaimanapun, ini sebenarnya jawaban yang lebih baik, tetapi datang di WAY setelah penghargaan.
posit labs
42

Ini adalah cara mendapatkan elemen DOM html murni dengan JS:

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

atau

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

Dan jika Anda ingin menggunakan jQuery untuk mendapatkan atribut darinya ...

$(htmlElement).attr(INSERT-ATTRIBUTE-NAME);
laboratorium posit
sumber
Jawaban Anda akan jauh lebih baik jika Anda bisa menjelaskan mengapa ini menjawab pertanyaan itu. Selain itu, silakan sorot kode dan klik {}tombol atau tekan ctrl + k untuk menandainya sebagai kode.
Ben
18

Selain beberapa jawaban lain, Anda juga dapat mengakses elemen HTML melalui:

var htmlEl = document.body.parentNode;

Maka Anda bisa mendapatkan konten HTML bagian dalam:

var inner = htmlEl.innerHTML;

Melakukan hal ini sepertinya sedikit lebih cepat . Namun, jika Anda baru saja memperoleh elemen HTML, document.body.parentNodetampaknya akan sedikit lebih cepat .

Setelah Anda memiliki elemen HTML, Anda dapat mengacaukan atribut dengan getAttributedan setAttributemetode.

Untuk DOCTYPE, Anda dapat menggunakan document.doctype, yang dijabarkan dalam pertanyaan ini .

kabel ganda
sumber
4
Sama seperti catatan: Ini akan gagal jika tubuh belum tersedia di dokumen.
DataDink
3
Dalam hal ini, document.head.parentNodemasih akan berfungsi jika ada elemen kepala.
mahemoff
15

Di jQuery:

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

Dalam Javascript biasa:

var html_string = document.documentElement.outerHTML
berkeleybross
sumber
4

jika Anda ingin mendapatkan atribut elemen HTML dengan jQuery yang dapat Anda gunakan .attr();

jadi $('html').attr('someAttribute');akan memberi Anda nilai someAttributeelemenhtml

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

Selain itu:

ada plugin jQuery di sini: http://plugins.jquery.com/project/getAttributes

yang memungkinkan Anda untuk mendapatkan semua atribut dari elemen HTML

jordanstephens
sumber
1
Proyek getAttributes () sudah agak tua sekarang (Feb 2009).
gligoran