在Chrome擴展中,我創建了試圖與每個選項卡存儲的選項卡屬性。做這個的最好方式是什麼?我研究過使用localStorage,但似乎可能有一個更簡單的方法。數據絕不是永久性的,它只存在於選項卡中。Chrome擴展附加屬性到每個選項卡
回答
絕對沒有必要使用localStorage
。如果沒有「數據絕不是永久的」概念,人們已經知道:標籤ID在會話中是唯一的。由此可見,數據是非持久性的。
最好的方法實現它是保持標籤屬性的哈希:
chrome.tabs.onCreated
(可選,添加到標籤哈希初始信息)chrome.tabs.onUpdated
- (添加/)更新選項卡中的散列(URL可用)chrome.tabs.onRemoved
- 刪除哈希進入
Tab對象都不貴:所有屬性是原始s(布爾值,數字,字符串)。
例如(僅後臺頁面):
var tabStore = {}; // <-- Collection of tabs
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
tabStore[tabId] = tab;
});
chrome.tabs.onRemoved.addListener(function(tabId) {
delete tabStore[tabId];
});
昨天,我只是試圖將自己的工作變成現實,在與本地存儲混淆的一天後,得出了完全相同的結論。很高興知道我終於在正確的地方結束了!感謝:) –
請注意,對於每個「頁面生命週期」,'onUpdated'會被觸發兩次('changeInfo.status':加載,完成)。所以,如果你只想在頁面改變事件上只行動一次,忽略其中的一個,例如'if(changeInfo.status!='loading'){/ * ... .do任何你想要的* /}'。 –
謝天謝地(不能說OP)我不需要onUpdated事件,但是很好的信息:) –
重要增編羅布W公司的答覆。
確保還要聽取tabs.onReplaced,並相應地更新tabStore。
chrome.tabs.onReplaced.addListener(function(addedTabId, removedTabId) {
tabStore[addedTabId] = tabStore[removedTabId];
delete tabStore[removedTabId];
});
Chrome可以更改引擎蓋下標籤的ID而不會發出警告或標誌。據我所知,唯一發生這種情況的是Google在搜索地址欄時輸入的「即時搜索」。這可能是一個邊緣情況,但如果你不跟蹤這一點,它可能最終會成爲一個非常陰險的問題。
- 1. Chrome擴展 - 選項卡數
- 2. Chrome擴展 - 打開多個選項卡
- 3. WPF選項卡控件附加屬性
- 4. Chrome擴展中的關閉選項卡
- 5. Chrome擴展創建選項卡中鉻
- 6. Chrome擴展選項
- 7. 使用附加屬性擴展類
- 8. 具有附加屬性的XSD擴展
- 9. 關閉Chrome擴展選項
- 10. Chrome擴展程序獲取每個選項卡上的當前域更改
- 11. pageToOverride Chrome擴展程序 - 設置默認選項卡打開Chrome
- 12. Chrome擴展程序切換選項卡:問題與選項卡選擇超時
- 13. 如何在我的Chrome擴展中創建一個選項卡
- 14. 擴展JQuery UI選項卡
- 15. Python列表擴展,用新行附加每個擴展值
- 16. 鉻擴展多個選項卡和chrome.runtime.connect
- 17. 帶擴展卡的Chrome擴展通知
- 18. 將github-highlight-selected-chrome擴展擴展到每個網頁
- 19. 附加到Chrome實例並在選項卡中運行JavaScript
- 20. 爲什麼我無法將ToggleButton.IsChecked屬性附加到擴展器
- 21. Android的附加選項卡
- 22. setTimeout並更新Chrome擴展程序中的正確選項卡
- 23. 找出在Chrome擴展中發送響應的選項卡
- 24. 從Chrome新選項卡擴展名接收postMessage
- 25. 如何在Chrome擴展內的新選項卡中打開URL?
- 26. 如何從擴展中獲取當前chrome選項卡的AST?
- 27. 使用Popup chrome擴展中的當前選項卡
- 28. 從Chrome擴展程序訪問當前選項卡DOM對象
- 29. Chrome擴展:訪問html背景選項卡
- 30. 如何使Chrome擴展熱鍵適用於所有選項卡?
你可能可以創建一個「數組」,其中的關鍵是標籤ID和內容是你想要的 –
是的,這將實際上工作。我可能必須在關閉的選項卡上有一個清理腳本,以便數組不會使用大量選項卡進行擴展。 – nathancahill