gpt4 book ai didi

javascript - Google Chrome 重复 JavaScript 'focus' 事件

转载 作者:数据小太阳 更新时间:2023-10-29 05:58:54 25 4
gpt4 key购买 nike

我注意到 Chrome 处理 javascript 焦点事件的方式有一个奇怪的问题。事实上,它会持续触发 focus 事件,即使它只发生一次。我在这里做了一些研究,发现人们在使用 alert() 时会遇到同样的问题。当他们关闭警报窗口时,焦点将返回到他们的输入,并且处理程序会一次又一次地触发。在我的例子中,问题是不同的,因为我使用的是 console.log(),有时我会得到相同的日志 2 次甚至 3 次。我注意到它通常发生在我清除控制台,然后专注于一个元素时。当我尝试重复它时,它不再发生。

场景:

  1. 清除控制台
  2. 关注元素(2 或 3 条控制台消息)
  3. 关注其他相同的元素或取消关注并再次关注同一个(没问题)
  4. 清除控制台
  5. 关注元素(2 或 3 条控制台消息 - 问题又来了!)

我已经创建了一个 jsfiddle,请查看: http://jsfiddle.net/ffuWT/3/

问题是,这个问题的原因是什么,我该如何解决?

最佳答案

令人毛骨悚然的是,这些事情是如何发生的。我今天在工作中遇到了这个确切的问题,但很快就把这个问题写了下来,怀疑第 3 方插件 (jQuery customInput) 中的狡猾事件监听和传播。我明天会仔细检查你的 jsfiddle。

我无法在我的当前可用设置(Mac 上的 Chrome v17)上重新创建您的确切输出,但我确实有一个理论可以分享。在您的场景和 Ben Lee 的评论中,一致的部分是将焦点转移到另一个窗口(在您的情况下为控制台)。

查看 http://www.quirksmode.org/dom/events/blurfocus.html在“窗口 + 可聚焦元素”下:

If the window is sent backward while a focusable element is focused, blur events should fire on both. If the window is brought forward again, focus events should fire on both.

接下来,在兼容性表中指出

Safari Windows fires two focus events.

也许 Chrome 最终也获得了这个“功能”,来自 Webkit 家族和所有?

关于javascript - Google Chrome 重复 JavaScript 'focus' 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9680518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com