代码之家  ›  专栏  ›  技术社区  ›  user3163495

IE9窃听器?<script>使用node.clonenode时执行两次内容(true)

  •  1
  • user3163495  · 技术社区  · 8 年前

    我知道IE9已经过时了,但它是我在构建的Web应用程序中仍然必须支持的最低版本的IE。

    总之,在不同浏览器中进行dom操作和测试时,我注意到ie9正在做一些事情 非常 很奇怪。我在div元素中有一个<script>块,当我使用node.clonenode(true)深入克隆该div元素,并使用document.body.appendchild或document.body.insertbefore将克隆附加到文档的某个位置时,克隆的<script>块将再次执行!没有其他浏览器显示这种行为。

    如果我没有弄错,<脚本>块在文档最初加载后附加到文档时不应该执行,对吗?如果我是对的,这是IE9的一个错误吗?

    这里是一个简单的html文档,您可以在其中看到这种行为的实际操作。使用此代码创建一个HTML文档,并使用IE9仿真在Internet Explorer中加载它。你应该看到一个弹出的警告,上面写着“嘿”。接下来,点击“点击我”按钮,你会看到同样的弹出窗口再次执行!

    <!DOCTYPE html>
    <html>
    <head>
    <title>IE9 Script Tag Bug Test</title>
    <script>
    function ButtonClick(){
    var Elem = document.getElementById('mydiv');
    var ElemClone = Elem.cloneNode(true);
    document.body.insertBefore(ElemClone,Elem);
    }
    </script>
    </head>
    <body>
    <div id="mydiv">
    This is a DIV.
    <script>
    alert("hey");
    </script>
    </div>
    <button onclick="ButtonClick();">Click Me</button>
    </body>
    </html>
    
    0 回复  |  直到 8 年前