我知道这里已经讨论过了,但是没有解决方案来获取整个文档(包括 doctype)。
$(document).html();
返回null
...
这将为您提供所有 HTML:
document.documentElement.outerHTML
不幸的是,它不返回文档类型。但是您可以使用document.doctype
它并将两者粘合在一起。
你可以做
new XMLSerializer().serializeToString(document);
适用于所有比 IE 9 更新的浏览器
尝试这个。
$("html").html()
document 是一个变量,它不代表 html 标签。
编辑
要获得可以使用的文档类型
document.doctype
这是一个在 IE6+ 中支持的功能,它没有使用outerHTML
更多的支持,它添加了 doctype 并使用了一些技巧来获取html
标签及其属性。为了接收带有文档类型的字符串,并且不使用outerHTML
因此它支持每个浏览器。它使用一些技巧来获取html
标签。添加此代码:
document.fullHTML = function () {
var r = document.documentElement.innerHTML, t = document.documentElement.attributes, i = 0, l = '',
d = '<!DOCTYPE ' + document.doctype.name + (document.doctype.publicId ? ' PUBLIC "' + document.doctype.publicId + '"' : '') + (!document.doctype.publicId && document.doctype.systemId ? ' SYSTEM' : '') + (document.doctype.systemId ? ' "' + document.doctype.systemId + '"' : '') + '>';
for (; i < t.length; i += 1) l += ' ' + t[i].name + '="' + t[i].value + '"';
return d+'\n<html' + l + '>' + r + '</html>';
}
现在,您可以运行此函数:
console.log(document.fullHTML());
这将返回 HTML 和文档类型。
我在example.com上运行了这个,结果如下
我不确定是否要获得完整的文档。但是您可以做的是,您可以分别获取 html 标签的内容和 doctype 的内容。
$('html').html() for content
和document.doctype用于获取 doctype
我不认为可以直接访问整个文档(包括文档类型),但这有效:
$.get(document.location, function(html) {
// use html (which is the complete source code, including the doctype)
});
我已经在浏览器的控制台上完成了
文档.文档元素;