2012-04-23 65 views
1

我在尝试获取当前HTML文档的内容以作进一步处理。 在有用的浏览器中,我可以很轻松地完成此操作。 (请参阅http://jsfiddle.net/HYyH4/使用IE捕获HTML内容

在IE中查看该链接时,我无法从该命令获取任何输出 - “无法设置innerHTML属性。此操作的目标元素无效。”

是否有任何其他方式来完成这样的事情,而无需手动重写整个DOM?我最终希望能够将其拉到jQuery中,以便我可以轻松地删除元素,所以jQuery.html()上不会失败的东西也会很好:)

感谢您的任何帮助/反馈!

+0

有趣的是,当我收到错误“对象不支持这个属性或方法”时,它来自原型。因为我正在做所有的jQuery命令,所以我不确定为什么原型的任何东西都会执行。我相当确定它不像.noConflict()问题那么简单(因为它已经运行)。 – Morgon 2012-04-23 04:15:12

回答

0

您可以尝试使用documentElement这将拉动文档根节点。

返回作为文档根元素的元素(对于 示例,HTML文档元素)。

它适用于IE 5.5+。继承人mdn article讨论它的进一步信息。

Live Demo

还要注意..的jsfiddle不知道在IE中以及在所有的工作,这样可能是问题的一部分,如果那是你使用的是带有测试的内容。

+0

感谢您的回复。不幸的是,我得到IE的/ other /错误,这是“此操作的目标元素无效。” ..我也尝试直接在开发工具中使用这些命令,以防它是一个特殊的jsFiddle问题,但同样的事情。 :( – Morgon 2012-04-23 02:03:24

+0

什么版本的IE浏览器,因为我只是试了一下,它在IE9中工作正常。 – Loktar 2012-04-23 02:04:22

+0

奇怪.9对我来说也没有骰子。如果我只是可以导入'document.documentElement.innerHTML' jQuery的,但jQuery.html()返回一个空白字符串。 – Morgon 2012-04-23 02:08:41

1

我不知道为什么你要复制的文件的源代码,所以我不能说是否有以下的Userful与否,但它返回一个HTML元素完全相同的DOM为原文:

var doc = document.getElementsByTagName('html')[0]; 
var newDoc = doc.cloneNode(true); 
alert(newDoc.innerHTML); 

无论您的情况是否合适,都取决于您。请注意,克隆的HTML元素(取决于浏览器)会丢失部分或全部动态添加的侦听器,而表单控制值可能不同。

+0

谢谢你的回应!在IE9伟大的工程;不幸的是IE8(我也需要它的功能)给我'对象不支持此属性或方法 – Morgon 2012-04-23 04:06:35

+0

它在我的IE 8中工作,你正在等待,直到加载事件不是你吗?什么是它的烦恼,克隆方法或innerHTML属性? – RobG 2012-04-23 06:18:23