Chrome扩展程序会将属性附加到每个标签

时间:2012-06-20 03:02:27

标签: google-chrome google-chrome-extension

在Chrome扩展程序中,我创建了我试图用每个标签存储的标签属性。做这个的最好方式是什么?我已经研究过使用localStorage,但似乎有一种更简单的方法。数据绝不是永久性的,只有选项卡才存在。

2 个答案:

答案 0 :(得分:4)

绝对不需要使用localStorage。如果没有“数据绝不是永久性”的概念,人们就会知道:标签ID在会话中是唯一的。从这一事实可以看出,数据是非持久性的。

实现它的最佳方法是维护选项卡属性的哈希:

Tab个对象并不昂贵:所有属性都是基元(布尔值,数字,字符串)。

例如(仅限背景页):

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];
});

答案 1 :(得分:2)

Rob W的回答重要补遗。

确保同时也听tabs.onReplaced,并相应地更新tabStore。

chrome.tabs.onReplaced.addListener(function(addedTabId, removedTabId) {
    tabStore[addedTabId] = tabStore[removedTabId];
    delete tabStore[removedTabId];
});

Chrome可以在没有警告或标志的情况下更改引擎盖下的标签的ID。据我所知,发生这种情况的唯一地方是Google&#34;即时搜索&#34;当您在地址栏中键入搜索时。这可能是一个边缘情况,但如果你不跟踪它,它可能最终成为一个非常阴险的问题。