设置元素的 innerHTML 属性以包含脚本元素时 IE 中的奇怪问题

发布于 2024-12-21 07:31:53 字数 663 浏览 4 评论 0原文

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

发生的情况是,当 innerHTML 设置为:

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

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

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

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

script 元素显示警报框时出现。

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

I'm having a weird issue in IE when I set an elements innerHTML attribute to a string that contains a script element.

What happens is, when innerHTML is set like:

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

The alert box doesn't show any text, as if the script element was removed completely. In addition, checking the element's childNodes collection also shows that the script element is not present as domEl.childNodes.length = 0.

However, if you add some text before the script tag like so:

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

The script element is present when the alert box is shown.

Why is this happening and how can I fix it properly? Is this a bug in IE? It works fine in the latest versions of Chrome and Firefox. I'm using IE 8 for this.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

猥琐帝 2024-12-28 07:31:53

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

looks like a bug, or some weird security consideration in IE.
try using XMP tags around your text. it might work, but that depends on what you were trying to achieve.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文