如何获取整个文档的HTML作为一个string?

有没有一种方法在JS获取html标签内的整个HTML,作为一个string?

document.documentElement.?? 

MS前段时间添加了outerHTMLinnerHTML属性。

根据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均支持outerHTMLouterHTML在DOM分析和序列化规范中。

请参阅quirksmode以了解适用于您的浏览器的兼容性。 全部支持innerHTML

 var markup = document.documentElement.innerHTML; alert(markup); 

我相信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均支持outerHTMLouterHTML在DOM分析和序列化规范中。

outerHTML属性上的MSDN页面指出它在IE 5+中受支持。 Colin的答案链接到W3C quirksmode页面,该页面提供了跨浏览器兼容性的好的比较(对于其他的DOMfunction)。

我尝试了各种答案,看看返回的是什么。 我正在使用最新版本的Chrome。

build议document.documentElement.innerHTML; 返回<head> ... </body>

Gaby的build议document.getElementsByTagName('html')[0].innerHTML; 还是一样的。

build议document.documentElement.outerHTML; 返回<html><head> ... </body></html>这是除了“文档types”的一切。

您可以使用document.doctype;检索doctype对象document.doctype; 这将返回一个对象,而不是一个string,所以如果你需要提取的细节作为string的所有文档types,直到包括HTML5它在这里描述: 获取HTML的JavaScripttypes的string

我只想要HTML5,所以下面的内容足以让我创build整个文档:

alert('<!DOCTYPE HTML>' + '\n' + document.documentElement.outerHTML);

你可以做

 new XMLSerializer().serializeToString(document) 

在比IE 9更新的浏览器中。

你也可以这样做:

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

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

 document.documentElement.outerHTML 

可能只有IE:

 > webBrowser1.DocumentText 

对于FF从1.0起:

 //serialize current DOM-Tree incl. changes/edits to ss-variable var ns = new XMLSerializer(); var ss= ns.serializeToString(document); alert(ss.substr(0,300)); 

可能在FF工作。 (从源文本的非常开始,主要是doctype-defs,显示了最初的300个字符。)

但请注意,FF MIGHT的正常“另存为”-Dialog不能保存页面的当前状态,而不是原始加载的X / h / tml-source-text! (将某个临时文件复制到某个临时文件,然后redirect到可能会提供一个可保存的源文本,同时对其进行更改/编辑。)

尽pipeFF在“后退”方面出现了良好的恢复,而NICE在input类似FIELDS,textarea等方面包含了“Save(as)…”的状态/值,而不是contenteditable / designMode中的元素。

如果不是一个xhtml-响应。 XML文件(MIMEtypes,不只是文件扩展!),可以使用document.open / write / close来设置appr。 内容添加到源层,这将从FF的File / Save菜单保存在用户的保存对话框中。 请参阅: http : //www.w3.org/MarkUp/2004/xhtml-faq#docwrite resp。

https://developer.mozilla.org/en-US/docs/Web/API/document.write

对X(ht)ML的问题是中立的,尝试一个“view-source:http:// …”作为(script-made !?)iframe的src-attrib的值, – 访问一个iframes- FF中的文件:

<iframe-elementnode>.contentDocument ,请参阅google“mdn contentDocument”for appr。 成员,比如“textContent”。 “那是几年前才知道的,也不想爬。 如果还有急需的话,请提一下,我要潜入…

 document.documentElement.innerHTML 

我总是使用

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

可能不是正确的方法,但是当我看到它的时候我可以理解它。

使用document.documentElement

同样的问题在这里回答: https : //stackoverflow.com/a/7289396/2164160

正确的方法实际上是:

webBrowser1.DocumentText