Firefox:JavaScript运行时没有单击事件
这是我的html文件:Firefox:JavaScript运行时没有单击事件,javascript,asynchronous,events,event-handling,Javascript,Asynchronous,Events,Event Handling,这是我的html文件: <!DOCTYPE html> <html> <head></head> <body> <script> function wait() { // I know this is obsolete var ms = 3000 + new Date().getTime(); while(ms > new Date()) {} console.log("3 Se
<!DOCTYPE html>
<html>
<head></head>
<body>
<script>
function wait() {
// I know this is obsolete
var ms = 3000 + new Date().getTime();
while(ms > new Date()) {}
console.log("3 Seconds Are Over");
}
function clickHandler() {
console.log("Click");
}
document.addEventListener("click", clickHandler);
wait();
console.log("End Global Execution Context");
</script>
</body>
</html>
函数wait(){
//我知道这已经过时了
var ms=3000+新日期().getTime();
while(ms>newdate()){}
console.log(“3秒结束”);
}
函数clickHandler(){
控制台日志(“单击”);
}
document.addEventListener(“单击”,clickHandler);
等待();
log(“结束全局执行上下文”);
由于EventHandler
是在JavaScript等待3秒钟之前注册的,因此它应该在最后记录“Click”
,即使我在这3秒钟内单击
但是,当我在
之后单击时,它只记录“Click”
,显然我的安装已损坏。新安装修复了该问题。显然,我的安装已损坏。新安装修复了该问题。JS默认为单线程。根据您运行此程序的上下文,您可以使用web workers或子进程之类的东西来并行化此程序。对不起,我误读了。是的,事件应该放在队列上,然后在循环后激发;这正是我从你的代码中得到的。如果你在前3秒内点击时没有得到“点击”(3秒后),请注意你正在测试的浏览器,因为我无法复制你的发现?@Amadan我在debianI上使用Firefox ESR 45.4.0,但没有这些功能;因此,为了明确起见,我所说的(操作系统X上的Chrome)-无论何时单击“输出”窗口,它都会记录“单击”(延迟除外,如果单击发生在加载的前3秒钟内,或单击“运行”)。它应该在最后记录“单击”您认为这是为什么?事件调度是异步的,它不能保证在执行某个语句或另一个语句之间准确传递。默认情况下,JS是单线程的。根据您运行此程序的上下文,您可以使用web workers或子进程之类的东西来并行化此程序。对不起,我误读了。是的,事件应该放在队列上,然后在循环后激发;这正是我从你的代码中得到的。如果你在前3秒内点击时没有得到“点击”(3秒后),请注意你正在测试的浏览器,因为我无法复制你的发现?@Amadan我在debianI上使用Firefox ESR 45.4.0,但没有这些功能;因此,为了明确起见,我所说的(操作系统X上的Chrome)-无论何时单击“输出”窗口,它都会记录“单击”(延迟除外,如果单击发生在加载的前3秒钟内,或单击“运行”)。它应该在最后记录“单击”您认为这是为什么?事件分派是异步的,它不能保证在执行某个语句或另一个语句之间准确地传递。