Javascript Firefox:setTimeout链导致延迟和删除浏览器事件

Javascript Firefox:setTimeout链导致延迟和删除浏览器事件,javascript,firefox,Javascript,Firefox,如果我有一页,只要: <script type="text/javascript"> function doCycle() { setTimeout("doCycle();", 200); } doCycle(); </script> <input></input> 函数doCycle(){ setTimeout(“doCycle();”,200); } doCycle(); 当我在旧计算机上的Firefox中打开页面或

如果我有一页,只要:

<script type="text/javascript">
  function doCycle() {
    setTimeout("doCycle();", 200);
  }
  doCycle();
</script>

<input></input>

函数doCycle(){
setTimeout(“doCycle();”,200);
}
doCycle();
当我在旧计算机上的Firefox中打开页面或在新计算机上打开firebug时,浏览器会随机删除事件(按下键盘并单击)。例如,如果我专注于一个输入元素,然后交替按“a”和“b”键。我将以输出(在输入元素中)结束,例如:

abababababababababababababab

因为某些按键被放下,所以有一些重复的字符。如果我调试,则不会为错过的事件触发keydown或keypress事件。按钮/点击也会发生这种情况

所以我的问题是:你认为这是firefox中的一个bug吗?或者为什么你认为这可能是有意的或固有的


我不太了解浏览器是如何处理setTimeout的,在网络上也找不到其他关于这个问题的参考资料。我想在firefox bug跟踪器中打开bug之前,我会尝试在这里收集更多信息。任何想法或见解将不胜感激

我不觉得这有什么奇怪。超时将在200毫秒后运行,但不会阻止浏览器处理其下的代码。您的问题还不是很清楚…

这里有一个关于javascript事件循环以及异步操作(如setTimeout)在浏览器中实际如何工作的很好的解释:setTimeout不是异步的。。。不过,一定要看那个视频,它很好地描述了事件循环。谢谢你们。那视频太棒了!我仍然感到困惑的一部分是,为什么键/点击事件实际上会被删除,而不是延迟到回调队列函数完成为止。如果我从视频中理解,这些按键/点击事件应该被放入回调队列,然后在setTimeout函数完成且调用堆栈再次清除后被调用。我也很好奇为什么我只能在firefox上发布这个问题?是不是因为firefox速度较慢,所以回调队列从中退出的频率较低?再次强调,任何洞察都是非常值得赞赏的!嗨,沙卡,对不起,问题不清楚。让我看看是否可以澄清一点:我在firefox中遇到了一个问题,当我有一个或多个setTimeout循环时,用户/客户端偶尔会丢失(浏览器不承认发生过)按键和鼠标单击。我用一个输入html元素和交替按键盘上的键观察/再现了这一点。你能举个例子吗?我试图复制你说的话,但运气不好