javascript - 当鼠标进入非事件浏览器窗口时触发一次 mousemove (Chrome)

  1. 打开开发工具控制台。
  2. 执行这段代码:

    window.addEventListener("mousemove", function() { console.log("moved!") });
    
  3. 激活任何另一个窗口。

  4. 将鼠标移动到浏览器窗口(但不要将焦点放在)。
  5. 查看控制台。

在 FF 中:什么都没有。

在 Chrome 中:有一个“移动!”消息。

因此,在非事件窗口中,当鼠标进入窗口时,Chrome 只会触发一个mousemove 事件,然后忽略任何后续移动。

这是一个错误吗?

如何管理这个?我可以检测到鼠标已经离开浏览器窗口,使用 mouseout 事件的 toElement Prop 。但是如何检测窗口当前是否处于事件状态?


我的环境:

Chrome 46.0.2490.80

火狐 41.0

MacOS 优胜美地 10.10.5

最佳答案

我在 Mac OS 13.0 Ventura 上的 Chrome 107 中看到了相同的行为。这是我的解决方法。

document.addEventListener('mousemove', function(){
    if(document.hasFocus()){
        console.log("moved!")
    }
});

https://stackoverflow.com/questions/33366353/

相关文章:

python - 没有名为 csv 的模块

android - 哪个平台支持BLE数据包长度扩展功能?

python - 我们如何使用 SQL-esque "LIKE"标准连接两个 Spark SQL 数

multithreading - 每个连接的 Netty 多线程

php - Wordpress 如何向所有 SETCOOKIE() 函数添加 httponly 和安

Java - 系统进程监听器

python - 使用 pyresample 绘制卫星 strip 数据

r - Shiny 应用程序的初始加载没有更新

nginx - Kong 拒绝将自定义插件识别为已启用

javascript - three.js 边缘和文本在旋转时呈锯齿状/模糊