在JS中是否有一种方法可以在HTML标签中获取整个HTML,作为字符串?

document.documentElement.??

当前回答

你还可以:

document.getElementsByTagName('html')[0].innerHTML

你不会得到Doctype或html标签,但其他的一切…

其他回答

我相信document.documentElement.outerHTML应该为您返回该值。

MDN表示,目前支持的浏览器包括Firefox 11、Chrome 0.2、Internet Explorer 4.0、Opera 7、Safari 1.3、Android、Firefox Mobile 11、IE Mobile、Opera Mobile、Safari Mobile等。outerHTML在DOM解析和序列化规范中。

outerHTML属性上的MSDN页面指出IE 5+支持它。Colin的回答链接到W3C quirksmode页面,该页面很好地比较了跨浏览器兼容性(也有其他DOM特性)。

我使用outerHTML的元素(主要<html>容器),和XMLSerializer的任何其他包括<!DOCTYPE>, <html>容器外的随机注释,或者其他可能在那里的东西。空格似乎没有保留在<html>元素之外,所以我默认使用sep="\n"添加换行符。

函数get_document_html(sep="\n") { 让HTML = ""; let xml = new XMLSerializer(); for (let n of document.childNodes) { if (n.nodeType == Node.ELEMENT_NODE) html += n.outerHTML + sep; 其他的 html += xml.serializeToString(n) + sep; } 返回html; } console.log (get_document_html()。片(0,200));

您必须遍历文档childNodes并获得outerHTML内容。

在VBA中是这样的

For Each e In document.ChildNodes
    Put ff, , e.outerHTML & vbCrLf
Next e

使用这个,允许你获得网页的所有元素,包括< !DOCTYPE >节点(如果它存在的话)

你还可以:

document.getElementsByTagName('html')[0].innerHTML

你不会得到Doctype或html标签,但其他的一切…

如果你想获取DOCTYPE之外的所有内容,这将有效:

document.getElementsByTagName('html')[0].outerHTML;

如果你想要doctype也可以这样:

new XMLSerializer().serializeToString(document.doctype) + document.getElementsByTagName('html')[0].outerHTML;