在Chrome扩展程序中使用background.js可以检测到焦点从一个选项卡移动到另一个选项卡吗?
我说的是一种非常特殊的情况-不仅仅是使用onactivated来检测用户单击了其他选项卡。
如果我打开了两个Chrome窗口(相同的用户帐户),每个窗口都显示了一个不同的网页,并且用户只需单击以将其带到最前面(以便您可以滚动并阅读该页面),则onactivated事件不会火。仅当您在单个窗口中的选项卡之间移动时,才似乎触发。
我可以捕获mousedown等,但是如果您单击一次以将窗口置于最前面,则这些事件也不会触发(第二次单击会触发mousedown)。
似乎是一个奇怪的疏忽...我本以为onactivate将涵盖这种情况-用户,他们已经将其激活。
实际上,当您第二次单击时,不会激活onactivated。我猜这是特定于在单个窗口中切换选项卡的。
答案 0 :(得分:1)
42000......000
在窗口中的活动选项卡更改[docs]时触发,这意味着每个窗口都将触发,因此除非用户在该选项卡的窗口内切换到其他选项卡,否则不会触发。 >
解决方案:使用chrome.tabs.onActivated
,当激活Chrome窗口[docs]时触发。
如果所有Chrome窗口都失去焦点,则报告chrome.windows.WINDOW_ID_NONE。注意:在某些Linux窗口管理器中,总是在从一个Chrome窗口切换到另一个Chrome窗口之前立即发送WINDOW_ID_NONE。
chrome.windows.onFocusChanged
您可以指定要报告的窗口类型:
chrome.windows.onFocusChanged.addListener(windowId => {
// do something
});