当我们使用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
那么,发生了什么?
答案 0 :(得分:8)
alert
打开模特对话。当它处于打开状态时,除了警报本身之外,您无法与页面的任何部分进行交互。
由于您无法与该页面进行互动,因此双击的后半部分无法达到跨度,因此双击事件不会触发。
答案 1 :(得分:3)
使用alert()
停止所有代码执行。如果您已经捕获单击停止代码执行,则无法捕获双击。
为了演示,我已经在你的小提琴中单击了alert
。您可以看到HERE双击时现在发生警报。
答案 2 :(得分:1)
因为您正在捕获第一次单击并显示警报。第二次点击没有被捕获,因为警报现在具有焦点。
如果你登录到控制台,那么两次点击都会被抓住,你会发现&#34; a&#34;被记录两次。
答案 3 :(得分:1)
有一些函数可以在调用代码时阻止代码运行。这称为同步函数,导致代码暂停,直到您单击OK
。 alert()是同步的,因此是prompt()。这会导致click事件发生并暂停代码运行,因此不再发生双击事件......