使用JavaScript/JQuery获取整个文档的HTML

8

我知道这个问题已经在这里讨论过了,但是还没有解决办法可以获取整个文档(包括doctype)。

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


1
为什么没有人在回答问题之前(“包括doctype”)阅读问题呢? - Denys Séguret
2
因为每个人都想第一个得到积分;-) - dtrunk
8个回答

14

这将帮助您获取所有的 HTML 代码:

document.documentElement.outerHTML

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


1
你是第一个提到 document.doctype 的人,所以我接受了你的答案。感谢大家! - dtrunk

8

您可以做

new XMLSerializer().serializeToString(document);

适用于所有版本高于IE 9的浏览器


4

这是一个在IE6+中支持的函数,它不使用outerHTML以获得更多的支持,它添加了文档类型并使用了一些技巧来获取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 上运行了这个命令,这里是结果

4

试一下这个。

$("html").html()

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

编辑

要获取文档类型,可以使用以下方法:

document.doctype

2
我认为这并没有回答问题:这并没有包括文档类型。 - Denys Séguret

1
document.documentElement.innerHTML 

将会以字符串形式返回所有文档标记。
若要获取整个文档类型,请阅读this

3
差一点但没有饼干:)它没有返回文档类型。 - Jan Hančič

1
我不确定是否可以获得完整的文档。但是您可以将HTML标记内容和文档类型分别获取。使用$('html').html()获取内容,使用document.doctype获取文档类型。

0

我认为没有直接访问整个文档(包括文档类型)的方法,但是以下方法可行:

$.get(document.location, function(html) {
    // use html (which is the complete source code, including the doctype)
});

1
我认为更高效的做法是利用已经打开的文档,而不是通过触发 Ajax 请求来“重新加载”它... - dtrunk
1
@dtrunk 是的,但没有其他东西能够提供完整的源代码,包括精确输入的文档类型(document.doctype是最接近的,但不是精确的)。 - Denys Séguret
此外,需要注意的是,由于文档已被缓存,通常不会触发请求。 - Denys Séguret

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

document.documentElement;


考虑添加更多细节和格式化代码的用法。 - mehrdadep
1
请注意,document.documentElement 返回一个 对象,而 document.documentElement.outerHTML 返回一个 字符串 - Ritesh Khandekar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接