0

Chrome拡張機能では、タブごとに保存しようとしているタブプロパティを作成しました。これを行うための最良の方法は何ですか?localStorageの使用を検討しましたが、もっと簡単な方法があるようです。データは永続的なものではなく、タブが存在する限り存在します。

4

2 に答える 2

4

を使用する必要はありませんlocalStorage。「データは決して永続的ではない」という概念がなければ、タブIDはセッション内で一意であることをすでに知っています。この事実から、データは非永続的であるということになります。

これを実装する最良の方法は、タブプロパティのハッシュを維持することです。

タブオブジェクトは高価ではありません。すべてのプロパティはプリミティブ(ブール値、数値、文字列)です。

たとえば(背景ページのみ):

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];
});
于 2012-06-20T07:49:55.037 に答える
2

ロブWの答えへの重要な補遺。

tabs.onReplacedもリッスンし、それに応じてtabStoreを更新してください。

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

Chromeは、警告や兆候なしに、内部のタブのIDを変更できます。私の知る限り、これが発生するのは、アドレスバーに検索を入力したときのGoogleの「インスタント検索」だけです。エッジケースかもしれませんが、これを追跡しないと、非常に陰湿な問題になる可能性があります。

于 2016-08-05T18:00:54.983 に答える