以下在所有其他浏览器中完美无缺(据我所知):
document.documentElement.innerHTML = "<head></head><body>Testing</body>";
但IE中的窒息(我测试了IE9),出现了控制台错误:
SCRIPT600: Invalid target element for this operation.
...引用上面代码行的第一个字符。
为什么这不适用于IE,但可以在所有其他浏览器中使用?我在某处看到innerHTML
有问题替换'TBODY'元素,但我在删除所有TBODY子项后测试了这行代码,并且发生了同样的错误。
我知道这听起来像是坏消息代码,但它是我留给我们被迫使用的非常有限和简单的CMS网站的唯一选择。我只是感谢CMS允许脚本执行。
从本质上讲,我需要能够完全消除HTML内容并使用我自己的内容。同样,这在其他浏览器上运行良好。
其他说明:
prototype.js
库(在运行此代码之前已经加载了它)<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
prototype.js
在页面加载时动态添加两个div
个完整内容答案 0 :(得分:1)
正如@duri和我确认的那样,documentElement
(<html>
)对象以及少数其他某些HTML元素在Internet Explorer中是只读的(请参阅第一条评论中的链接),并且因此,无法以跨浏览器方式替换documentElement
。
使用Javascript从link
中删除所有现有script
和head
标记,然后设置body
属性以匹配替换内容,然后替换{ {1}}的{1}},最后动态添加我自己的innerHTML
,body
和script
标签作为meta
的子项,几乎达到了同样的事情。
感谢@duri的解决方法提示!
答案 1 :(得分:1)
document.open("text/html", "replace");
document.write("<head></head><body>Testing</body>");
document.close();