2014-12-30 15 views
5

Ich mache eine Chrome-Erweiterung und mein Problem ist, dass chrome.tabs.onUpdated.addListener() mehrmals aufgerufen wird.chrome.tabs.onUpdated.addListener() mehrmals aufgerufen

Mein Code ist wie dieser

chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) { 
    if(changeInfo.status == 'complete' && tab.status == 'complete' && tab.url != undefined){ 
     doSomething 
    } 
}); 

Diese Chrome Ausgabe zusammenhängt 162.543 und es scheint, als feste, aber ich habe immer noch dieses Problem.

+0

Wird der Ereignis-Listener mehrmals ausgeführt oder werden mehrere Ereignisse ausgelöst? – abraham

+0

Der Ereignis-Listener –

+1

Können Sie Ihre Datei "manifest.json" posten? Wenn Sie in Ihrem Hintergrundeintrag "persistent": false haben, können Sie beim onUpdated-Ereignis mehrere Aufrufe erhalten. – Paul

Antwort

2

Bitte beachten Sie: chrome.tabs.onUpdated wird auch für iFrames ausgelöst, wenn eine Seite viele Iframes enthält, wird jedes abgeschlossene iFrame das Ereignis auslösen, obwohl Sie changeInfo.status überprüft haben.

Um dieses Problem zu lösen, können Sie einen Blick auf meine Antwort in diesem Beitrag Chrome extension - page update twice then removed on YouTube werfen, und verwenden Sie chrome.webNavigation.onCompleted oder chrome.webNavigation.onHistoryStateUpdated, die von Ihren Test-Sites abhängt.

Verwandte Themen