移动窗口时激活/停用事件

Activate/deactivate events when moving the window

本文关键字:事件 激活 窗口 移动      更新时间:2023-09-26

在我的Firefox扩展中,我试图跟踪窗口实际上是活动窗口的时间。为此,我在窗口中添加了以下两个监听器:

  window.addEventListener("deactivate", function(event) { alert("deactivate"); }, false);
  window.addEventListener("activate", function(event) { alert("activate");  }, false);

基本上一切都很好。当我在不同的窗口之间切换,或者最小化/最大化Firefox时,事件会像我预期的那样触发。然而,当我移动窗口时,即使它已经处于活动状态,这两个事件也会触发。当我开始移动窗口时,会触发"停用"事件;当我停止移动并释放鼠标按钮时,就会触发"激活"事件。我不知道如何才能发现并忽略这种行为。直观地说,该窗口一直处于活动状态。

如果按下了鼠标按钮,我会在处理"停用"事件之前进行检查。但是,向窗口添加"点击"事件侦听器似乎不包括窗口的标题栏。有人知道我如何区分"真的"关闭/激活窗口和移动窗口吗?提前感谢!

您可以使用此答案来检测浏览器在屏幕上的位置。如果你一开始就这样做,你可以比较它们是否在变化。

页面加载时的情况:

var x,
    y,
    win = window;
if(win.screenTop !== undefined) {
    x = win.screenleft;
    y = win.screenTop;
} else {
    x = win.screenX;
    y = win.screenY
}

并在事件触发时将这些值与当前值进行比较。

(请注意,这仅在窗口位置发生变化时有效)