单击不同窗口中的弹出窗口时,Chrome扩展程序lastFocusedWindow不会更改

时间:2018-01-19 04:29:54

标签: javascript google-chrome google-chrome-extension focus chrome-extension-async

当用户点击我的弹出窗口时,我试图获取当前窗口中的所有标签。我知道chrome.windows.getCurrent()永远不会工作,因为那是代码执行的窗口。

所以我尝试chrome.windows.getLastFocused()但后来我意识到我可以直接在标签上做同样的事情

chrome.tabs.query({lastFocusedWindow: true}, (tabs)=>{
    tabs.forEach(function(tab){
        console.log(tab.title)
    })
})

问题
当我打开多个多个窗口并单击扩展图标以打开我的弹出窗口时,lastFocusedWindow似乎无法更改。
我有一些事件处理程序,这些事件处理程序当前只是在弹出窗口加载时记录当前窗口中的选项卡,并且还在弹出窗口内的任何位置监听单击。

示例:我有2个窗口

  1. 单击window1中的弹出图标(window1中正确标识的选项卡)
  2. 单击window2中的弹出图标(window2中正确识别的选项卡)
  3. 点击里面 window1上的弹出内容(仍然认为我在窗口2中显示并显示窗口2的标签)
  4. 我想不知何故,当我直接点击弹出窗口时,Chrome并没有将其视为焦点变化,我不知道该怎么做。

    我的解决方法/黑客是在点击事件发生后在我的弹出窗口中使用window.close(),这样就不太可能同时打开多个弹出窗口,但它并不能完全解决问题是因为他们可以点击打开弹出窗口,然后点击另一个窗口打开另一个弹出窗口,让第一个弹出窗口打开。

0 个答案:

没有答案