JavaScript代码会被执行吗?

时间:2014-01-04 14:58:44

标签: javascript jquery

假设启用了jQuery。

是否会调用alert(1)alert(2)

这是HTML:

<div id="testDiv">
  <script>
    $('#testDiv').remove();
    alert(1);
  </script>
  <script>
    alert(2);
  </script>
</div>

我自己做了一些测试,并发现第一个警报会显示但不会显示第二个警报。我在Chrome下测试。只是想知道每个其他浏览器会发生什么。我可以期待同样的行为吗?

2 个答案:

答案 0 :(得分:3)

亲眼看看:http://jsfiddle.net/7EpNj/

第一个将执行,因为它将完成第一个执行第一个脚本标记,即使它已从DOM中删除。第二个脚本标记将不会执行。

这是预期的行为,并且应该跨浏览器保持一致。

编辑但是,虽然最新的Firefox,Chrome,Safari,Opera和Internet Explorer(IE10)的行为符合预期,但IE9及更低版本实际上会触发这两个功能,即使两个脚本标签都是从DOM中移除。

<script>
    function func1(){
    alert("func1()");
}
function func2(){
    alert("func2()");
}
</script>
<div id="testDiv">
  <script>
    $('#testDiv').remove();
    func1();
  </script>
  <script>
    func2();
  </script>
</div>

答案 1 :(得分:0)

他们不应该。 jQuery将首先执行$("#test-div").remove();,然后再转到下一行。删除#test-div也会删除其中的所有标记和脚本,从而删除对func1()func2()的调用。