У вас возникли проблемы с chrome.tabs.onSelectionChanged.addListener. Все работает хорошо, пока все окно не будет закрыто. Затем этот слушатель запускается ... по какой бы то ни было причине. Для меня это нехорошо, но в любом случае:Расширение Chrome: Вкладка Listener onSelectionChanged
На этом слушателе я работаю с функцией chrome.tabs.get. И эта функция выдает ошибку в момент закрытия окна:
Error during tabs.get: No tab with id: 70.
Это имеет смысл. В данный момент вкладка больше не существует. У кого-нибудь уже был способ обойти это? Одна из возможных причин - удалить слушателя при закрытии окна. Но, к сожалению, removeListener не работает (если кто знает, как удалить, я благодарен).
Лучшие
EDIT 1,1: Модифицированная функция от подхода для Serg (спасибо за что на этом пути):
Сначала я пытался поймать только вкладки фактического окна с: 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