Я считаю, что это связано с асинхронной природой расширений Chrome.
Этот раздел моего кода:
alert(tab.title);
chrome.tabs.executeScript(tab.id, {code:"document.title = 'test'"});
Работает нормально, но как только я убираю предупреждение, оно перестает работать. Могу ли я что-нибудь сделать, чтобы удалить оповещение, но все еще вводить js?
РЕДАКТИРОВАТЬ: больше код
tabs - это глобальный массив объектов tab.
chrome.tabs.onSelectionChanged.addListener(function (tabId) {
for (var i = 0; i < tabs.length; i++) {
if (tabs[i].id == tabId) {
var tab = tabs[i];
while (i < tabs.length) {//length-1
tabs[i] = tabs[i+1];
i++;
}
tabs.pop();
alert(tab.title);//WHY IS THIS NEEDED
chrome.tabs.executeScript(tab.id, {code:"document.title = document.title.substring(1)"});
return;
}
}
});
Я очень смущен. Его изменение решает проблему следующим образом:
chrome.tabs.executeScript(tab.id, {code:"setTimeout('document.title = document.title.substring(1)',100)"});
Однако, как только я изменил задержку на 50, скрипт больше не будет выполняться. Я бы предпочел не делать эту задержку. Кто-нибудь знает, что происходит?