在JS中是否有一种方法可以在HTML标签中获取整个HTML,作为字符串?
document.documentElement.??
在JS中是否有一种方法可以在HTML标签中获取整个HTML,作为字符串?
document.documentElement.??
当前回答
我使用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));
其他回答
正确的做法其实是:
webBrowser1。DocumentText
MS在一段时间前添加了outerHTML和innerHTML属性。
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解析和序列化规范中。
查看quirksmode浏览器兼容性,了解适合您的浏览器。都支持innerHTML。
var markup = document.documentElement.innerHTML;
alert(markup);
可能只有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工作。(显示源文本最开始的前300个字符,主要是doctype-defs。)
但是请注意,正常的FF的“另存为”对话框可能不会保存页面的当前状态,而是最初加载的X/h/tml-source-text !! (POST-up ss到某个临时文件并重定向到该文件可能会提供一个可保存的源文本,其中包含之前对其进行的更改/编辑。)
虽然FF惊喜于“back”上的良好恢复和“Save (as)…”上的状态/值的NICE包含,如输入字段,textarea等,而不是contentteditable / designMode中的元素…
如果不是xhtml- respp。xml-file (mime-type,不仅仅是filename-extension!),你可以使用document。打开/写入/关闭设置appr。内容到源层,将保存在用户的保存对话框从文件/保存菜单的FF。 看到的: http://www.w3.org/MarkUp/2004/xhtml-faq docwrite职责。
https://developer.mozilla.org/en-US/docs/Web/API/document.write
对于X(ht)ML的问题中立,尝试“view-source:http://...”作为iframe (script-made!?)的src-attrib的值,-来访问FF中的iframe -文档:
< iframe-elementnode >。appr,请参见谷歌"mdn contentDocument"。成员,例如'textContent'。 “几年前就有了,不喜欢爬着拿。如果还有紧急需要,就提这个,我要潜入…
如果你想获取DOCTYPE之外的所有内容,这将有效:
document.getElementsByTagName('html')[0].outerHTML;
如果你想要doctype也可以这样:
new XMLSerializer().serializeToString(document.doctype) + document.getElementsByTagName('html')[0].outerHTML;
我只需要doctype html,应该可以在IE11, Edge和Chrome中正常工作。我使用下面的代码,它工作得很好。
function downloadPage(element, event) {
var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);
if ((navigator.userAgent.indexOf("MSIE") != -1) || (!!document.documentMode == true)) {
document.execCommand('SaveAs', '1', 'page.html');
event.preventDefault();
} else {
if(isChrome) {
element.setAttribute('href','data:text/html;charset=UTF-8,'+encodeURIComponent('<!doctype html>' + document.documentElement.outerHTML));
}
element.setAttribute('download', 'page.html');
}
}
在你的锚标签中像这样使用。
<a href="#" onclick="downloadPage(this,event);" download>Download entire page.</a>
例子
function downloadPage(element, event) { var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor); if ((navigator.userAgent.indexOf("MSIE") != -1) || (!!document.documentMode == true)) { document.execCommand('SaveAs', '1', 'page.html'); event.preventDefault(); } else { if(isChrome) { element.setAttribute('href','data:text/html;charset=UTF-8,'+encodeURIComponent('<!doctype html>' + document.documentElement.outerHTML)); } element.setAttribute('download', 'page.html'); } } I just need doctype html and should work fine in IE11, Edge and Chrome. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. <p> <a href="#" onclick="downloadPage(this,event);" download><h2>Download entire page.</h2></a></p> <p>Some image here</p> <p><img src="https://placeimg.com/250/150/animals"/></p>