chrome.tabs.onSelectionChanged.addListenerに問題がありました。ウィンドウ全体が閉じられるまで、すべてがうまくいきます。そして、このリスナーは何らかの理由で誘発されます。私にとってはちょっとバグですが、とにかく:Chrome拡張機能:タブリスナーonSelectionChanged
このリスナーでは、chrome.tabs.get関数を使って作業しています。そして、この機能は、ウィンドウが閉じた瞬間にエラーを投げています:
Error during tabs.get: No tab with id: 70.
これは意味があります。この瞬間にタブは存在しなくなりました。誰もがこれを回避する方法をすでに持っていたのですか? 1つの理由は、ウィンドウを閉じるときにリスナーを削除することです。しかし残念なことに、removeListenerは機能しません(誰かが削除する方法を知っていれば、私は感謝しています)。
ベスト
EDIT 1.1:sergのアプローチから変更された機能(このようにそのためのTHX):chrome.windows:
まず私だけで実際のウィンドウのタブを捉えてみました。 getCurrent。しかし、この関数はwindows.tabs配列を返しません。だから私はまず現在のwindows.idを読み込み、このウィンドウのタブをループするだけです。
function ensureTabExists(tabId, callback) {
chrome.windows.getCurrent(function(windows) {
var exists = false;
windowsId=windows.id;
chrome.windows.getAll({populate: true}, function(windows){
loop:
for(var w=0;w<windows.length;++w) {
if (windows[w].id == windowsId) {
for(var t=0;t<windows[w].tabs.length;++t){
if(windows[w].tabs[t].id == tabId) {
exists = true;
break loop;
}
}
}
}
if(exists && callback) {
callback();
}
});
});
}
あなたが唯一の現在のウィンドウのタブをループする必要がある場合には、単に '' chrome.tabs.getAllInWindow(null)を行うには、そのすべての代わりに。 – serg