2013-07-23 8 views
5

Rozwijam rozszerzenie do Chrome.Przedłużenie przeglądarki Chrome na systemie zawieszenia nigdy nie jest nazywane

Próbuję dodać detektor zdarzeń do chrome.runtime.onSuspend, ale nigdy nie jest on wywoływany.

Używam następującego kodu, ale localStorage nie jest modyfikowany i nie ma również komunikatów dziennika w konsoli (używam --enable-logging --v=1, aby zapisać komunikaty dziennika do pliku).

chrome.runtime.onSuspend.addListener(function() { 
    localStorage["suspend"] = new Date(); 
    console.log("On suspend"); 
}); 

box Test: WinXP SP3 x86 z Chrome 28.0.1500.72 m

Utworzyłem rozszerzenie testu łatwo odtworzyć ten problem:

manifest.json

{ 
    "manifest_version": 2, 

    "name": "Chrome onSuspend test", 
    "version": "1.0", 

    "background": { 
    "scripts": ["background.js"] } 
} 

background.js

chrome.runtime.onSuspend.addListener(function() { 
    localStorage["suspend"] = new Date(); 
    console.log("On suspend"); 
}); 

Odpowiedz

8

Zdarzenie onSuspend jest wyzwalane tylko wtedy, gdy strona zdarzenia staje się nieaktywna.

Ponieważ w pliku manifestu nie zadeklarowano persistent: false, strona tła to background page, a nie event page. W związku z tym strona nigdy nie będzie nieaktywna, a zdarzenie onSuspend nigdy nie zostanie wyzwolone.

Jeśli chcesz, aby Twoje strony w tle na stronie wydarzenia, należy

... 
    "background": { 
     "scripts": ["background.js"], 
     "persistent": false 
    } 
} 
+2

nie powinien strona tła stają się nieaktywne w przeglądarce ścisłej/przedłużacza usunięcia lub przedłużających wydarzeń Wyłączyć? – Anton

+3

Jak mogę obsłużyć te zdarzenia? – Anton

+0

@Anton Nie możesz. Po zamknięciu przeglądarki wszystkie rozszerzenia są kończone bez żadnego powiadomienia. –

Powiązane problemy