在我的Firefox扩展中,我试图跟踪窗口实际上是活动窗口的情况。为此,我在窗口中添加了以下两个监听器:
window.addEventListener("deactivate", function(event) { alert("deactivate"); }, false);
window.addEventListener("activate", function(event) { alert("activate"); }, false);基本上,一切都很好。当我在不同的窗口之间切换,或者最小化/最大化Firefox时,事件会像我预期的那样触发。但是,当我移动窗口时,这两个事件也会触发,即使它已经处于活动状态。当我开始移动窗口时,“停用”事件被激发;当我停止移动并释放鼠标按钮时,“激活”事件被激发。我不知道如何检测和忽略这种行为。直观地说,该窗口始终处于活动状态。
我尝试在处理“停用”事件之前检查是否按下了鼠标按钮。但是,向窗口添加"click“事件侦听器似乎不包括窗口的标题栏。有人知道我如何区分“真正”取消/激活窗口和移动窗口吗?提前谢谢你!
发布于 2012-03-06 07:17:35
您可以使用this answer来检测浏览器在屏幕上的位置。如果你一开始就这样做,你就可以比较它们是否在变化。
类似于页面加载时的情况:
var x,
y,
win = window;
if(win.screenTop !== undefined) {
x = win.screenleft;
y = win.screenTop;
} else {
x = win.screenX;
y = win.screenY
}并将这些值与事件触发时的当前值进行比较。
(请注意,这仅在窗口位置更改时起作用)
https://stackoverflow.com/questions/8870465
复制相似问题