Я пишу расширение chrome и на некоторых веб-сайтах chrome.tabs.onUpdated.addListener() вызывается дважды.chrome.tabs.onUpdated.addListener() вызывается дважды
В основном это происходит, если я нажимаю ссылку, а не когда я набираю URL-адрес самостоятельно.
Из того, что я нашел в Интернете, и из многих вопросов, заданных на StackOverflow, была ошибка на хроме, но она была исправлена несколько лет назад.
Некоторые люди утверждают, что это происходит, если на странице есть несколько фреймов, но в моем случае на моей странице нет фреймов.
Это мой код:
var storage = chrome.storage.local;
chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) {
if (changeInfo.status == 'complete' && tab.status == 'complete' && tab.url != undefined) {
storage.get('URLs', function(URLs){
for (var item in URLs)
{
if (tab.url == item)
{
return;
}
else
{
//alert ("tab load complete");
storage.set({URLs: [tab.url]});
chrome.tabs.executeScript(tab.id, {
"file": "flashblocker.js"
}, function() { // Execute your code
console.log("Script Executed .. "); // Notification on Completion
});
}
}
});
}
});
Как я могу сделать это запустить только один раз?
Спасибо.
onUpdated может быть вызван при вызове API истории или изменении хэша '#foo'. Я думаю, вам нужно использовать метод @Nikhil. –