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
s充满内容div
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();