9

我知道这里已经讨论过了,但是没有解决方案来获取整个文档(包括 doctype)。

$(document).html();返回null...

4

8 回答 8

15

这将为您提供所有 HTML:

document.documentElement.outerHTML

不幸的是,它不返回文档类型。但是您可以使用document.doctype它并将两者粘合在一起。

于 2013-01-31T08:21:33.037 回答
7

你可以做

new XMLSerializer().serializeToString(document);

适用于所有比 IE 9 更新的浏览器

于 2016-03-10T12:59:24.867 回答
4

尝试这个。

$("html").html()

document 是一个变量,它不代表 html 标签。

编辑

要获得可以使用的文档类型

document.doctype
于 2013-01-31T08:19:52.897 回答
3

这是一个在 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上运行了这个,结果如下

于 2015-05-20T04:29:59.600 回答
1
document.documentElement.innerHTML 

会将所有文档标记作为字符串返回给您

让整个 doctype 阅读这个

于 2013-01-31T08:25:08.573 回答
1

我不确定是否要获得完整的文档。但是您可以做的是,您可以分别获取 html 标签的内容和 doctype 的内容。

$('html').html() for contentdocument.doctype用于获取 doctype

于 2013-01-31T08:26:39.880 回答
0

我不认为可以直接访问整个文档(包括文档类型),但这有效:

$.get(document.location, function(html) {
    // use html (which is the complete source code, including the doctype)
});
于 2013-01-31T08:19:47.350 回答
0

我已经在浏览器的控制台上完成了

文档.文档元素;

于 2020-02-23T10:54:53.030 回答