在我的Firefox扩展程序中,我试图在窗口实际上是活动窗口时跟踪。为此,我将以下两个监听器添加到窗口中:
window.addEventListener("deactivate", function(event) { alert("deactivate"); }, false);
window.addEventListener("activate", function(event) { alert("activate"); }, false);
基本上一切正常。当我在不同的窗口之间切换,或者最小化/最大化Firefox时,事件会像我期望的那样激发。但是,即使它已经处于活动状态,当我移动窗口时,这两个事件也会被触发。当我开始移动窗口时,会触发“deactivate”事件;当我停止移动并释放鼠标按钮时,会激活“激活”事件。我不知道如何检测并忽略此行为。直观地说,窗口始终处于活动状态。
如果按下鼠标按钮,我在处理“deactivate”事件之前尝试检查。但是,向窗口添加“click”事件侦听器似乎不包括窗口的标题栏。任何人都知道如何区分“真正”去激活窗口和移动窗口?非常感谢提前!
答案 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
}
并在事件触发时将这些值与当前值进行比较。
(请注意,这仅在窗口位置发生变化时才有效)