设置元素的 innerHTML 属性以包含脚本元素时 IE 中的奇怪问题
当我将元素的 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
看起来像是一个错误,或者是 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.