2012-02-01 56 views
3

應該是直截了當的吧?我們有以下聽衆在我們的處置。如何獲取剛剛在Chrome擴展程序中關閉的選項卡的網址?

chrome.tabs.onRemoved.addListener(函數(tabId,removeinfo)),但因爲這片已被刪除

tabId將不再有效。這給我們留下了removeinfo對象,但chrome文檔沒有指出它包含的屬性。我是一個javascript新手,所以我不知道是否有辦法通過某種反射過程獲取屬性。

任何想法?到目前爲止,我已經嘗試了大約50次Google搜索。

+1

你有沒有試過'console.log(removeInfo)'並期待看到它包含什麼? – 2012-02-01 17:15:24

+0

所以這個問題在問了這個問題多了5年之後,我認爲這個聽衆沒有什麼改變:( – 2017-02-26 11:42:59

回答

1

在一般情況下,如果你想通過JS對象的內容戳,你可以吐出來與console.log(thing)控制檯或console.debug(thing)。控制檯與按Ctrl +打開 + Ĵ,或選項 + Cmd的 + Ĵ在Mac上。

不過,我可以告訴你,removeInfo對象沒有你需要的信息。這是一種痛苦,但您必須將偵聽器添加到onCreated和onUpdated以便跟蹤使用某個全局對象作爲散列表的tabID到URL映射,然後使用該對象上的tabID檢索URL。請注意,這些事件需要tabs權限。 (更多的信息在這裏:http://code.google.com/chrome/extensions/tabs.html

如果你可以描述你的用例,並提出更改API的情況下,我會建議打開票http://new.crbug.com

+0

謝謝!我驚訝地發現他們在這裏沒有這些明顯有用的數據,但我現在可以根據你的回答建立我需要的東西。 – 2012-02-01 20:44:34

2

removeInfo in onRemoved是一個包含單個布爾值的對象。它應該看起來像這樣{ isWindowClosing: false }

您將不得不維護一個URL數組作爲與onUpdated事件的選項卡。如果URL存在,則將其保存到數組中,並且當觸發事件時您將保存該URL。

var urls = []; 
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) { 
    if (changeInfo.url) { 
    urls[tabId] = changeInfo.url; 
    } 
}); 

當你想,只是關閉了一個標籤的網址,你可以使用var url = urls[tabId];

+0

謝謝!給了你一個upvote。給了其他人接受的答案,因爲答案几乎相同但他聲譽較低,所以需要他們更多:)。我終於可以完成這件事了。 – 2012-02-01 20:46:56

相關問題