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