Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firefox完全忽略点击事件_Javascript_Events_Firefox - Fatal编程技术网

Javascript Firefox完全忽略点击事件

Javascript Firefox完全忽略点击事件,javascript,events,firefox,Javascript,Events,Firefox,在下面的代码中,当JS忙于循环时,我单击文档,Firefox似乎完全忽略了它。它应该注册click并在当前JS线程完成后执行它,但是click回调的警报永远不会显示。为什么呢?这只发生在Firefox上,Chrome看起来不错。小提琴在这里 函数homerSays(){ 警惕(“嗯……狗狗……”); } 设置超时(homerSays,5000); document.onclick=函数(){ 警惕(“DOH!”); } 对于(i=0;i

在下面的代码中,当JS忙于循环时,我单击文档,Firefox似乎完全忽略了它。它应该注册click并在当前JS线程完成后执行它,但是click回调的警报永远不会显示。为什么呢?这只发生在Firefox上,Chrome看起来不错。小提琴在这里

函数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;
}