【发布时间】:2012-01-16 21:27:59
【问题描述】:
以下在所有其他浏览器中都能完美运行(据我所知):
document.documentElement.innerHTML = "<head></head><body>Testing</body>";
但是在 IE 中阻塞(我测试了 IE9),出现控制台错误:
SCRIPT600: Invalid target element for this operation.
...引用上面代码行的第一个字符。
为什么这在 IE 中不起作用,但在所有其他浏览器中都起作用?我在某处读到 innerHTML 在替换“TBODY”元素时出现问题,但我在删除所有 TBODY 子元素后测试了这行代码,并发生了同样的错误。
我知道这听起来像是坏消息代码,但这是我不得不使用的非常有限且过于简单的 CMS 网站的唯一选择。我只感谢 CMS 允许执行脚本。
本质上,我需要能够完全消化 HTML 内容并使用我自己的内容。同样,这在其他浏览器上也能正常工作。
其他说明:
- CMS 正在使用
prototype.js库(在我运行此代码之前它已经加载) - 文档类型为:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - CMS 脚本使用
prototype.js在页面加载时动态添加两个充满内容的divs
【问题讨论】:
-
我的情况是这样吗? stackoverflow.com/a/255180/435596 我永远无法在 IE 中更改
HEAD或HTML的内容吗? -
是的,你找到了正确的答案;
innerHTML是只读的,即使对于 IE 中的<html>元素,直到版本 9。无论如何,我认为替换document.body.innerHTML和document.title会更好 - 这些包括所有可见内容,你不会体验任何问题,无需重写整个<head>内容。 -
感谢您的确认。我现在正在使用 BODY,但是我的外部链接没有加载到头部并导致问题,并且 CMS 在头部加载的外部资源也搞砸了。我可以接受您的评论作为答案吗?这个应该怎么回答?
标签: javascript internet-explorer innerhtml