js 如何拿到整个html
- 前端开发
- 2025-07-28
- 9
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。

解释:
- 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内容,但这种方法会清空当前文档并重写内容,通常不推荐使用。
解释:
- 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内容时。
