当我们使用 alert()
有时候代码会中断。
例如:
HTML:
<span>Hi</span>
使用Javascript:
$(document).ready(function () {
$("span").dblclick(function () {
alert("b");
});
$("span").click(function () {
alert("a");
});
});
该 alert("b")
甚至没有出现。
但如果我们改变了 alert()
至 console.log
,它被记录下来。
警报演示 & console.log演示
那么,发生了什么?
alert
打开模型对话。打开时,除了警报本身外,您无法与页面的任何部分进行交互。
由于您无法与页面进行交互,因此双击的后半部分无法到达跨度,因此双击事件不会触发。
运用 alert()
停止所有代码执行。如果您已经捕获单击停止代码执行,则无法捕获双击。
为了证明,我已经注释掉了 alert
单击你的小提琴。你可以看到 这里 双击时现在发生警报。
因为您正在捕获第一次单击并显示警报。第二次单击不会被捕获,因为警报现在具有焦点。
如果您登录到控制台,则两次点击都会被捕获,您会注意到“a”会被记录两次。
有一些函数可以在调用代码时阻止代码运行。这称为同步函数,在您单击之前会导致代码暂停 OK
。 alert()是同步的,因此是prompt()。这会导致click事件发生并暂停代码运行,因此不再发生双击事件......