Javascript 无法获取$(document.html())

Javascript 无法获取$(document.html()),javascript,jquery,domdocument,innerhtml,Javascript,Jquery,Domdocument,Innerhtml,此事件在我执行以下操作时触发: $(document).on('dblclick', function() { alert($(document).html()); }); 但异常会在控制台中引发: Timestamp: 20.7.2013 18:59:35 Error: TypeError: t is null Source File: http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js Line: 5 这

此事件在我执行以下操作时触发:

$(document).on('dblclick', function() {
    alert($(document).html());
});
但异常会在控制台中引发:

Timestamp: 20.7.2013 18:59:35
Error: TypeError: t is null
Source File: http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js
Line: 5
这是与jQuery相关的问题还是我使用了错误的方法获取当前HTML文档的整个HTML?

请尝试以下代码:

$(document).on('dblclick', function() {
    alert($('html').html());
});

文档
不是一个元素,因此它无法将自身呈现为HTML。除了对当前URL的Ajax请求之外,目前还没有兼容的方法来获取整个实际的源代码——即使这样也可能不会返回相同的结果

$('html').html()
将获取
标记中的所有内容。在大多数情况下,这已经足够了。添加一个
,您就拥有了一个有效的HTML文档(假设原始源代码就是一个)

document.documentElement.outerHtml
以获取大部分文档。这将包括
标记,但除此之外没有任何有效的内容。具体地说,它不会为您提供doctype,也不会为您提供在doctype之前或之后出现的任何注释

对于现代浏览器,
新的XMLSerializer
可以获取文档的当前内容。不过,它在IE8中不起作用


当然,所有这些告诉浏览器对文档进行HTML化的方法,都会在浏览器理解内容时返回内容。浏览器可能会破坏无效的HTML以使其适合文档。例如,出现在
元素之后的内容可能会移动到元素内部

如果您想要所有内容,包括DOCTYPE,并且了解它是源代码生成的,而不是原始源代码,则可以在
文档中使用

$(document).on('dblclick', function() {
    alert(new XMLSerializer().serializeToString(document));
});

它会在
上方得到
吗?这不是我需要的…是的。我不知道其他方法。不会给出和DOCTYPE:)不…但除非您使用XHTML,否则您不需要它。它会在
上方获得
吗?正如我所说的。。。我需要的是entrie HTML文档,而不是部分文档,开始于!:)然后执行Ajax请求:谢谢你,保罗!这就是我要找的!我想捕捉所有修改过的内容!再次感谢!注意,
XMLSerializer
在IE8中不存在。