您可以检测到不同Windows中打开的选项卡之间的移动吗?

时间:2018-11-20 16:32:55

标签: google-chrome-extension

在Chrome扩展程序中使用background.js可以检测到焦点从一个选项卡移动到另一个选项卡吗?

我说的是一种非常特殊的情况-不仅仅是使用onactivated来检测用户单击了其他选项卡。

如果我打开了两个Chrome窗口(相同的用户帐户),每个窗口都显示了一个不同的网页,并且用户只需单击以将其带到最前面(以便您可以滚动并阅读该页面),则onactivated事件不会火。仅当您在单个窗口中的选项卡之间移动时,才似乎触发。

我可以捕获mousedown等,但是如果您单击一次以将窗口置于最前面,则这些事件也不会触发(第二次单击会触发mousedown)。

似乎是一个奇怪的疏忽...我本以为onactivate将涵盖这种情况-用户,他们已经将其激活。

实际上,当您第二次单击时,不会激活onactivated。我猜这是特定于在单个窗口中切换选项卡的。

1 个答案:

答案 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
});