我正在尝试对Google Chrome进行扩展,这要求我能够识别当前选中的标签。我使用chrome.tabs.onSelectionChanged方法做到了这一点,但是当我切换窗口时,这不会被触发。我打算使用chrome.windows.onFocusChanged来检测窗口何时发生变化,然后使用chrome.tabs.getSelected方法。但问题是chrome.windows.onFocusChanged似乎不止一次被触发。如果我没有弄错,它返回窗口-1,然后创建第一个窗口(通常为1),然后是当前窗口。如果选择了第一个窗口,则它会触发-1,然后触发1.
我在这里使用正确的方法吗?有没有更好的方法呢?如果我坚持下去,我可能需要跟踪窗口如何变化,这有点混乱。
答案 0 :(得分:1)
有点为我自己的解决方案工作。对于任何有兴趣做类似事情的人来说,我做的是使用onFocusChanged作为指示,发生窗口更改,然后启动requestListener。使用内容脚本时,只要有window.focus事件指示焦点已经在该窗口上,我就会向扩展发送请求。然后requestlistener将自己删除。不幸的是,这种方法要求所有选项卡在每次获得焦点时都发送请求。还有一些调整来解决这个问题,但是我觉得这个问题已经足够了,因为每次焦点发生变化时发送请求都不会占用太多资源。