【问题标题】:Weird issue in IE when setting element's innerHTML attribute to contain a script element将元素的 innerHTML 属性设置为包含脚本元素时 IE 中的奇怪问题
【发布时间】:2011-12-13 21:37:21
【问题描述】:

当我将元素的 innerHTML 属性设置为包含脚本元素的字符串时,我在 IE 中遇到了一个奇怪的问题。

当 innerHTML 设置如下时会发生什么:

domEl.innerHTML = "<script type=\"text/javascript\">alert(\"hello world\");</script>"
alert(domEl.innerHTML);

警告框不显示任何文本,就好像脚本元素已被完全删除一样。此外,检查元素的 childNodes 集合还显示脚本元素不存在为domEl.childNodes.length = 0。

但是,如果您在脚本标记之前添加一些文本,如下所示:

domEl.innerHTML = "start text<script type=\"text/javascript\">alert(\"hello world\");</script>"
alert(domEl.innerHTML);

当显示警告框时,脚本元素就出现了。

为什么会发生这种情况,我该如何正确解决?这是IE中的错误吗?它在最新版本的 Chrome 和 Firefox 中运行良好。我为此使用 IE 8。

【问题讨论】:

    标签: javascript internet-explorer innerhtml script-tag


    【解决方案1】:

    看起来像一个错误,或者 IE 中的一些奇怪的安全考虑。 尝试在文本周围使用 XMP 标签。它可能会起作用,但这取决于您要达到的目标。

    【讨论】:

    • 我现在在脚本标签之前添加了 XMP 标签,一切似乎都很顺利,但是这样做对我来说并不容易,因为我知道这不是解决问题的正确方法像这样,但话又说回来,这似乎是现在唯一的方法。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多