2011-11-11 78 views
2

我有一個Chrome擴展,它將內容腳本中的消息發送到後臺頁面並記錄內容腳本的tab_id。 我注意到在google.com | de |上記錄了兩條消息,因此創建了兩個內容腳本:一個用於選項卡中顯示的實際網頁(例如https://www.google.com/search?q=python+standard+library),另一個用於Google結果列表中第一項的內容腳本(在上例中http://docs.python.org/library/谷歌瀏覽器擴展中的隱藏標籤

更奇怪 - 第二個內容腳本(隱藏的)的tab_id無效。即chrome.pageAction.hide(tab_id)導致以下錯誤出現:pageAction.hide期間

錯誤:ID爲無選項卡:71

有沒有辦法找出如果一個內容腳本屬於「隱藏「選項卡?

感謝, 彼得

回答

1

首先,你可以使用onCreated和/或onUpdated跟蹤標籤和URL映射,而不需要一個內容腳本。

但是,如果您的內容腳本不僅僅是通知後臺頁面的標籤ID,還可能意味着更多的檢查。

如果您的內容腳本在all_frames上運行,那麼您將從頂部窗口中的內容腳本和所有內部框架獲取消息。不過,當我測試一個示例實現時,我爲它們獲得了相同的ID。此外,它們都不是來自搜索結果列表中的條目。

如果您正在所有選項卡中運行腳本,則可以確保只有頂層窗口通過用if (window.top === window)包裝呼叫sendRequest來發送消息。

難道你有可能有另一個擴展運行,預覽谷歌結果莫名其妙嗎?這可能會產生這種效果....