Javascript Firefox完全忽略点击事件
在下面的代码中,当JS忙于循环时,我单击文档,Firefox似乎完全忽略了它。它应该注册click并在当前JS线程完成后执行它,但是click回调的警报永远不会显示。为什么呢?这只发生在Firefox上,Chrome看起来不错。小提琴在这里Javascript Firefox完全忽略点击事件,javascript,events,firefox,Javascript,Events,Firefox,在下面的代码中,当JS忙于循环时,我单击文档,Firefox似乎完全忽略了它。它应该注册click并在当前JS线程完成后执行它,但是click回调的警报永远不会显示。为什么呢?这只发生在Firefox上,Chrome看起来不错。小提琴在这里 函数homerSays(){ 警惕(“嗯……狗狗……”); } 设置超时(homerSays,5000); document.onclick=函数(){ 警惕(“DOH!”); } 对于(i=0;i
函数homerSays(){
警惕(“嗯……狗狗……”);
}
设置超时(homerSays,5000);
document.onclick=函数(){
警惕(“DOH!”);
}
对于(i=0;i<1000000;i++){
box.innerHTML=i;
}
在JS“线程”完成之前,侦听器可能是不活动的?为什么需要这样做?不管怎样,这有什么区别?你几乎不需要这种行为,是吗?试图理解任务队列的工作原理,但这似乎没有多大意义。即使在JS当前正在运行时,点击也应该放在一个任务队列中,并在早晚执行,至少我认为应该是这样,但前提是任务队列配置为捕捉点击——这可能还没有。尝试将循环放入homerSays
超时,它应该可以工作。不确定“配置为捕捉点击”是什么意思?有任何链接可以解释得更详细一点,或者你介意解释得更详细一点吗?干杯,基本上我的意思是听众已经准备好了。如果没有侦听器,任务队列将不会存储事件。可能实际的侦听器设置(在任务队列中注册)会推迟到“线程”结束,这样FF就不会捕获在与addEventListener
相同的事件循环中触发的事件。
function homerSays() {
alert("hmm.. Doghnuts...");
}
setTimeout(homerSays, 5000);
document.onclick = function () {
alert("DOH!");
}
for (i = 0; i < 1000000; i++) {
box.innerHTML = i;
}