`
lbp2007
  • 浏览: 8992 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

IE7和ie8中innerHTML 方法载入的 SCRIPT 标签不执行

阅读更多
分析以下代码:
<html>
<head>
</head>
<body>
<div id="d1"></div>
<div id="d2"></div>
<script>
    var a1 = "<div>a1</div><script>alert('a1');<\/script>";
    var a2 = "<script>alert('a2');<\/script>"
    document.getElementById("d1").innerHTML = a1;
    document.getElementById("d2").innerHTML = a2;
</script>
</body>
</html>


上面代码中分别往【d1】和【d2】中通过 innerHTML 插入了一段 HTML 代码,且均包含有 SCRIPT 标签。区别为【d1】中插入的 HTML 代码比【d2】中在最开始多了一个 DIV 元素。

在 IE 中只弹出了 "a1" 提示框,即只有字符串 "a1" 中的脚本执行。这是 IE 的一个 Bug,所以通常为了使 innerHTML 插入的脚本能够在 IE 中正常执行,经常会在欲插入的 HTML 代码字符串的最开始增加一个不可见的元素。如:
<span style="display:none;">span</span><script>alert('a1');<\/script>
参考:http://www.w3help.org/zh-cn/causes/BX9029
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics