有没有办法测试窗口当前是否聚焦?我知道我可以使用在窗口上激活的addEventListener来执行此操作,并使用全局var来跟踪它,但问题是我需要在启动我的插件时测试它,所以这是在有机会添加任何事件侦听器之前。
执行window == Services.wm.getMostRecentWindow(null)
将无法正常工作,因为其他应用程序窗口可能会超过它。所以我想我需要知道firefox是否是当前最顶层的窗口。
tldr:我需要测试当前窗口是否聚焦,这不仅意味着任何其他firefox窗口,而且意味着操作系统上的所有窗口。
答案 0 :(得分:1)
require("sdk/window/utils").isFocused(window)
function isFocused(window) {
const FM = Cc["@mozilla.org/focus-manager;1"].
getService(Ci.nsIFocusManager);
let childTargetWindow = {};
FM.getFocusedElementForWindow(window, true, childTargetWindow);
childTargetWindow = childTargetWindow.value;
let focusedChildWindow = {};
if (FM.activeWindow) {
FM.getFocusedElementForWindow(FM.activeWindow, true, focusedChildWindow);
focusedChildWindow = focusedChildWindow.value;
}
return (focusedChildWindow === childTargetWindow);
}
isFocused(window);