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

时间:2012-01-15 14:33:56

标签: javascript events firefox firefox-addon

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

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

基本上一切正常。当我在不同的窗口之间切换,或者最小化/最大化Firefox时,事件会像我期望的那样激发。但是,即使它已经处于活动状态,当我移动窗口时,这两个事件也会被触发。当我开始移动窗口时,会触发“deactivate”事件;当我停止移动并释放鼠标按钮时,会激活“激活”事件。我不知道如何检测并忽略此行为。直观地说,窗口始终处于活动状态。

如果按下鼠标按钮,我在处理“deactivate”事件之前尝试检查。但是,向窗口添加“click”事件侦听器似乎不包括窗口的标题栏。任何人都知道如何区分“真正”去激活窗口和移动窗口?非常感谢提前!

1 个答案:

答案 0 :(得分:0)

您可以使用this answer检测屏幕上的浏览器位置。如果你在开始时这样做,你可以比较它们是否正在改变。

页面加载时的内容:

var x,
    y,
    win = window;

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

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

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