Javascript 在Internet Explorer中替换document.documentElement.innerHTML

Javascript 在Internet Explorer中替换document.documentElement.innerHTML,javascript,internet-explorer,innerhtml,Javascript,Internet Explorer,Innerhtml,以下内容(据我所知)在所有其他浏览器中都能完美运行: document.documentElement.innerHTML = "<head></head><body>Testing</body>"; …引用上面代码行的第一个字符 为什么这在IE中不起作用,但在所有其他浏览器中都起作用?我在某个地方读到innerHTML在替换“TBODY”元素时出现问题,但我在删除所有TBODY子元素后测试了这行代码,并出现了相同的错误 我知道这听起来像是坏消息

以下内容(据我所知)在所有其他浏览器中都能完美运行:

document.documentElement.innerHTML = "<head></head><body>Testing</body>";
…引用上面代码行的第一个字符

为什么这在IE中不起作用,但在所有其他浏览器中都起作用?我在某个地方读到
innerHTML
在替换“TBODY”元素时出现问题,但我在删除所有TBODY子元素后测试了这行代码,并出现了相同的错误

我知道这听起来像是坏消息代码,但这是我唯一的选择,我已经离开了非常有限和简单的CMS网站,我们正被迫使用。我只感谢CMS允许执行脚本

本质上,我需要能够完全消化HTML内容并使用我自己的。同样,这在其他浏览器上也可以正常工作

其他说明:

  • CMS正在使用
    prototype.js
    库(在我运行此代码之前已经加载了该库)
  • Doctype是:
  • CMS脚本使用
    prototype.js
    在页面加载时动态添加两个
    div
    s充满内容

正如@duri和我确认的那样,
documentElement
)对象以及一些其他特定HTML元素在Internet Explorer中是只读的(请参见第一条评论中的链接),因此不可能以跨浏览器方式替换
documentElement

使用Javascript从
头部
中剥离所有现有的
链接
脚本
标记,然后设置
正文
属性以匹配替换内容,然后替换
正文
内部HTML
,最后动态添加我自己的
脚本
,而
css
标记作为
head
的子项,实现了几乎相同的功能

感谢@duri提供的解决方法提示

document.open(“text/html”,“replace”);
document.open("text/html", "replace");
document.write("<head></head><body>Testing</body>");
document.close();
文件。编写(“测试”); document.close();
在我的情况下是这样吗?我永远无法更改IE中
HEAD
HTML
的内容吗?是的,您已经找到了正确的答案
innerHTML
即使对于IE版本9之前的
元素也是只读的。无论如何,我认为最好替换
document.body.innerHTML
document.title
-这些包括所有可见的内容,您将不会遇到任何问题,无需重写整个
内容。感谢您的确认。我现在正在使用身体,但是我的外部链接没有加载到头部,导致了问题,CMS加载到头部的外部资源也把事情搞砸了。我可以接受你的评论作为回答吗?应该如何回答这个问题?与
document.documentElement.innerHTML
相比,此方法还有一个额外的优势-它会再次触发所有事件,如
body.onload
。因此,在较新的浏览器上,它也是一个更好的选择。
document.open("text/html", "replace");
document.write("<head></head><body>Testing</body>");
document.close();