วิธีรับแท็ก <html> HTML ด้วย JavaScript / jQuery


161

ใช้$('html').html()ฉันจะได้รับ HTML ภายใน<html>แท็ก ( <head>, <body>ฯลฯ ) แต่ฉันจะรับ HTML จริงของ<html>แท็ก (พร้อมแอตทริบิวต์) ได้อย่างไร

หรือเป็นไปได้ที่จะรับ HTML ทั้งหมดของหน้า (รวมถึง doctype <html>และอื่น ๆ ) ด้วย jQuery (หรือ JavaScript เก่าธรรมดา)

คำตอบ:


306

วิธีที่ง่ายที่สุดในการรับhtmlองค์ประกอบคือ:

document.documentElement

นี่คือการอ้างอิง: https://developer.mozilla.org/en-US/docs/Web/API/Document.documentElement

ปรับปรุง: เมื่อต้องการคว้าhtmlองค์ประกอบเป็นสายอักขระคุณจะทำ:

document.documentElement.outerHTML

1
ดูเพิ่มเติมคำถามนี้สำหรับข้อมูลเพิ่มเติมเกี่ยวกับdocumentElementความเข้ากันได้เบราว์เซอร์: stackoverflow.com/q/11391827/177710
โอลิเวอร์

คุณได้รับการอ้างอิงถึงองค์ประกอบ html บ่อยแค่ไหน!? ฉันไม่คิดว่าการแสดงควรเป็นเรื่องที่น่ากังวล อย่างไรก็ตามนี่เป็นคำตอบที่ดีกว่า แต่มันมาใน WAY หลังจากได้รับรางวัล
โพสิทแลบ

42

นี่คือวิธีการรับองค์ประกอบ DOM HTML อย่างแท้จริงกับ JS:

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

หรือ

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

และถ้าคุณต้องการใช้ jQuery เพื่อรับคุณสมบัติจากมัน ...

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

คำตอบของคุณจะดีขึ้นอย่างมากถ้าคุณสามารถอธิบายได้ว่าทำไมสิ่งนี้ตอบคำถาม นอกจากนี้โปรดไฮไลต์รหัสและคลิก{}ปุ่มหรือกด ctrl + k เพื่อทำเครื่องหมายเป็นรหัส
Ben

18

นอกเหนือจากคำตอบอื่น ๆ แล้วคุณยังสามารถเข้าถึงองค์ประกอบ HTML ผ่าน:

var htmlEl = document.body.parentNode;

จากนั้นคุณสามารถรับเนื้อหา HTML ภายใน:

var inner = htmlEl.innerHTML;

การทำเช่นนี้ด้วยวิธีนี้ดูเหมือนว่าจะเล็กน้อยได้เร็วขึ้น หากคุณเป็นเพียงการได้รับองค์ประกอบ HTML แต่document.body.parentNodeดูเหมือนว่าจะค่อนข้างบิตเร็วขึ้น

หลังจากที่คุณมีองค์ประกอบ HTML คุณสามารถยุ่งกับคุณลักษณะด้วยgetAttributeและsetAttributeวิธีการ

สำหรับ DOCTYPE คุณสามารถใช้document.doctypeซึ่งได้อธิบายไว้ในคำถามนี้


4
เช่นเดียวกับหมายเหตุ: สิ่งนี้จะล้มเหลวหากยังไม่มีเนื้อหาในเอกสาร
DataDink

3
ในกรณีนี้document.head.parentNodeจะยังคงทำงานหากมีองค์ประกอบส่วนหัว
mahemoff


4

หากคุณต้องการได้รับคุณสมบัติขององค์ประกอบ HTML ด้วย jQuery คุณสามารถใช้ .attr();

ดังนั้น$('html').attr('someAttribute');จะให้คุณค่าของsomeAttributeองค์ประกอบhtml

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

นอกจากนี้:

มีปลั๊กอิน jQuery ที่นี่: http://plugins.jquery.com/project/getAttributes

ที่ช่วยให้คุณรับคุณลักษณะทั้งหมดจากองค์ประกอบ HTML


1
โปรเจ็กต์ getAttributes () ค่อนข้างเก่าตอนนี้ (ก.พ. 2009)
gligoran
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.