为什么alert()会破坏代码执行?

时间:2014-03-30 15:16:50

标签: javascript alert

当我们使用alert()时,有时代码会中断。

例如:

HTML:

<span>Hi</span>

使用Javascript:

$(document).ready(function () {

    $("span").dblclick(function () {
        alert("b");
    });
    $("span").click(function () {
        alert("a");
    });

});

alert("b")甚至没有出现。

但是,如果我们将alert()更改为console.log,则会将其记录下来。

Alert Demo&amp; console.log Demo

那么,发生了什么?

4 个答案:

答案 0 :(得分:8)

alert打开模特对话。当它处于打开状态时,除了警报本身之外,您无法与页面的任何部分进行交互。

由于您无法与该页面进行互动,因此双击的后半部分无法达到跨度,因此双击事件不会触发。

答案 1 :(得分:3)

使用alert()停止所有代码执行。如果您已经捕获单击停止代码执行,则无法捕获双击。

为了演示,我已经在你的小提琴中单击了alert。您可以看到HERE双击时现在发生警报。

答案 2 :(得分:1)

因为您正在捕获第一次单击并显示警报。第二次点击没有被捕获,因为警报现在具有焦点。

如果你登录到控制台,那么两次点击都会被抓住,你会发现&#34; a&#34;被记录两次。

答案 3 :(得分:1)

有一些函数可以在调用代码时阻止代码运行。这称为同步函数,导致代码暂停,直到您单击OK。 alert()是同步的,因此是prompt()。这会导致click事件发生并暂停代码运行,因此不再发生双击事件......