2011-11-11 100 views
2

我試圖對Google Chrome進行擴展,這需要我能夠識別當前選定的選項卡。我用chrome.tabs.onSelectionChanged方法做到了這一點,但是當我切換窗口時,這並沒有被解僱。我打算使用chrome.windows.onFocusChanged來檢測窗口何時更改,然後使用chrome.tabs.getSelected方法。但問題是,chrome.windows.onFocusChanged似乎不止一次被解僱。如果我沒有弄錯,它會返回窗口-1,然後創建第一個窗口(通常是1),然後是當前窗口。如果第一個窗口被選中,那麼它會觸發-1,然後是1.Chrome擴展程序 - Chrome.windows.onFocusChanged行爲

我在這裏使用正確的方法嗎?有沒有更好的方法來做到這一點?如果我堅持下去,我可能需要跟蹤窗口的變化有點混亂。

+0

保羅,感謝您的信息!當系統允許您將您的「編輯」部分移至答案並自行接受時,您是否可以?非常感激! – cxw

+1

好主意@cxw。完成了,謝謝! – Paul

回答

1

有點有用這個我自己的解決方案。對於任何有興趣做類似事情的人來說,我所做的只是使用onFocusChanged作爲一個指示器,以便發生窗口變化,然後啓動requestListener。使用內容腳本時,只要有window.focus事件表明焦點已經在該窗口上,就向擴展發送了一個請求。 requestlistener然後刪除自己。不幸的是,這種方法要求所有標籤在每次獲得焦點時發送請求。爲了解決這個問題,我想了一些更多的調整,但是我認爲這樣做足夠了,因爲每次發生焦點變化時都會發送請求,但似乎並沒有消耗那麼多資源。