js 如何拿到整个html
- 前端开发
- 2025-07-28
- 4
JavaScript 中,可以通过 `document.documentElement.
JavaScript中,获取整个HTML内容有多种方法,具体取决于你的需求和使用场景,以下是几种常见的方法及其详细解释:
使用 document.documentElement.outerHTML
这是最直接的方法,可以获取整个HTML文档的完整内容,包括<html>
const htmlContent = document.documentElement.outerHTML;
console.log(htmlContent);
解释:
document.documentElement
返回的是<html>
元素。
outerHTML
属性返回元素的完整HTML,包括自身标签。
使用 document.body.innerHTML
如果你只需要<body>
标签内的内容,可以使用innerHTML
。
const bodyContent = document.body.innerHTML;
console.log(bodyContent);
解释:
document.body
返回的是<body>
元素。
innerHTML
属性返回元素内部的HTML内容,不包括自身标签。
使用 document.documentElement.innerHTML
如果你需要<html>
标签内的内容,但不包括<html>
标签本身,可以使用innerHTML
。
const htmlInnerContent = document.documentElement.innerHTML;
console.log(htmlInnerContent);
解释:

document.documentElement
返回的是<html>
元素。
innerHTML
属性返回元素内部的HTML内容,不包括自身标签。
使用 new XMLSerializer().serializeToString(document)
这种方法可以将整个DOM树序列化为字符串,适用于需要精确控制输出格式的场景。
const serializer = new XMLSerializer();
const htmlString = serializer.serializeToString(document);
console.log(htmlString);
解释:
XMLSerializer
是一个用于将DOM树序列化为字符串的接口。
serializeToString
方法将传入的DOM节点序列化为字符串。
使用 document.write()
(不推荐)
虽然可以使用document.write()
来获取HTML内容,但这种方法会清空当前文档并重写内容,通常不推荐使用。
const htmlContent = document.documentElement.outerHTML;
document.write(htmlContent);
解释:
document.write()
会将传入的字符串写入当前文档,通常会清空现有内容。
使用 outerHTML
和 innerHTML
的区别
属性
描述
outerHTML
返回元素自身的HTML,包括自身标签。
innerHTML
返回元素内部的HTML,不包括自身标签。
使用 document.head.innerHTML
和 document.body.innerHTML
如果你需要分别获取<head>
和<body>
,可以分别使用innerHTML
。
const headContent = document.head.innerHTML;
const bodyContent = document.body.innerHTML;
console.log(headContent, bodyContent);
解释:
document.head
返回的是<head>
元素。
document.body
返回的是<body>
元素。
使用 document.all
(IE特有,不推荐)
在旧版IE中,可以使用document.all
来获取所有元素,但这种方法不推荐使用,因为它不是标准方法。
const allElements = document.all;
console.log(allElements);
解释:
document.all
返回的是文档中所有元素的集合,但只在IE中支持。
使用 document.querySelectorAll('')
如果你需要获取所有元素的列表,可以使用querySelectorAll('')
。
const allElements = document.querySelectorAll('');
allElements.forEach(element => {
console.log(element.outerHTML);
});
解释:
querySelectorAll('')
返回文档中所有元素的NodeList。
outerHTML
属性返回每个元素的完整HTML,包括自身标签。
使用 document.createTreeWalker()
(高级用法)
如果你需要遍历整个DOM树,可以使用TreeWalker
。
const walker = document.createTreeWalker(document.body, NodeFilter.SHOW_ELEMENT, null, false);
let currentNode;
while (currentNode = walker.nextNode()) {
console.log(currentNode.outerHTML);
}
解释:
createTreeWalker
创建一个遍历DOM树的TreeWalker
对象。
NodeFilter.SHOW_ELEMENT
指定只显示元素节点。
walker.nextNode()
返回下一个符合条件的节点。
相关问答FAQs
Q1: 如何区分 outerHTML
和 innerHTML
?
A1: outerHTML
返回元素自身的HTML,包括自身标签,而 innerHTML
返回元素内部的HTML,不包括自身标签,对于<div id="example">Hello</div>
,outerHTML
返回 <div id="example">Hello</div>
,而 innerHTML
返回 Hello
。
Q2: 为什么使用 XMLSerializer
来获取HTML内容?
A2: XMLSerializer
可以将DOM树序列化为字符串,适用于需要精确控制输出格式的场景,比如在服务器端处理或保存HTML内容时。