IE7和ie8中innerHTML 步骤载入的 SCRIPT 标签不执行

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