当我这样做时会触发此事件:
$(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?
答案 0 :(得分:1)
如果您想要所有内容,包括 DOCTYPE 并了解它是生成源而非原始来源,您可以document
使用XMLSerializer。
$(document).on('dblclick', function() {
alert(new XMLSerializer().serializeToString(document));
});
答案 1 :(得分:0)
请尝试使用此代码:
$(document).on('dblclick', function() {
alert($('html').html());
});
答案 2 :(得分:-1)
document
不是元素,因此无法将自身呈现为HTML。目前没有兼容的方法来获取整个实际的源代码,缺少对当前URL的Ajax请求 - 甚至可能不会返回相同的内容。
$('html').html()
将为您提供<html>
标记内的所有内容。在大多数情况下,这是充足的。粘贴<!DOCTYPE html>
,你自己有一个有效的HTML文档(假设原始来源代表一个)。
document.documentElement.outerHtml
获取文档的大多数。这将包括<html>
标记,但不包括任何有效的标记。具体来说,它不会为您提供doctype或任何出现在之前或之后的评论。
对于现代浏览器,new XMLSerializer
可以获取文档的当前内容。但它在IE8中不起作用。
当然,所有这些告诉浏览器HTML化文档的方法,在浏览器理解它们时返回内容 。浏览器可能会破坏无效的HTML以使其适合文档。例如,<body>
元素之后出现的内容可能会移动到其中。