Chrome拡張機能では、タブごとに保存しようとしているタブプロパティを作成しました。これを行うための最良の方法は何ですか?localStorageの使用を検討しましたが、もっと簡単な方法があるようです。データは永続的なものではなく、タブが存在する限り存在します。
質問する
1380 次
2 に答える
4
を使用する必要はありませんlocalStorage
。「データは決して永続的ではない」という概念がなければ、タブIDはセッション内で一意であることをすでに知っています。この事実から、データは非永続的であるということになります。
これを実装する最良の方法は、タブプロパティのハッシュを維持することです。
chrome.tabs.onCreated
(オプション、タブハッシュに初期情報を追加)chrome.tabs.onUpdated
-(追加/)タブハッシュの更新(URLが利用可能)chrome.tabs.onRemoved
-ハッシュエントリを削除します
タブオブジェクトは高価ではありません。すべてのプロパティはプリミティブ(ブール値、数値、文字列)です。
たとえば(背景ページのみ):
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 に答える