W jaki sposób rozszerzenie może dowiedzieć się, że jest uruchamiane po raz pierwszy lub właśnie zostało zaktualizowane, aby rozszerzenie mogło wykonywać określone czynności? (np. otwórz stronę pomocy lub zaktualizuj ustawienia)
98
W jaki sposób rozszerzenie może dowiedzieć się, że jest uruchamiane po raz pierwszy lub właśnie zostało zaktualizowane, aby rozszerzenie mogło wykonywać określone czynności? (np. otwórz stronę pomocy lub zaktualizuj ustawienia)
Odpowiedzi:
W nowszych wersjach Chrome (od Chrome 22) możesz korzystać z
chrome.runtime.onInstalled
wydarzenia, które jest znacznie czystsze.Przykład:
// Check whether new version is installed chrome.runtime.onInstalled.addListener(function(details){ if(details.reason == "install"){ console.log("This is a first install!"); }else if(details.reason == "update"){ var thisVersion = chrome.runtime.getManifest().version; console.log("Updated from " + details.previousVersion + " to " + thisVersion + "!"); } });
źródło
Zaktualizowana odpowiedź odzwierciedlająca wersję 3 manifestu:
Chromium ma teraz zestaw interfejsów API chrome.runtime , które umożliwiają pobranie wersji rozszerzenia.
Aby uzyskać aktualną wersję:
Aby nasłuchiwać, kiedy rozszerzenie zostało zainstalowane po raz pierwszy, kiedy zostało zaktualizowane do nowej wersji i kiedy Chromium zostało zaktualizowane do nowej wersji, możesz użyć
onInstalled
wydarzenia.To wszystko!
Stara odpowiedź, sprzed 2011 r
Jeśli chcesz sprawdzić, czy rozszerzenie zostało zainstalowane lub zaktualizowane, możesz zrobić coś takiego:
źródło
prevVersion == 'undefined'
... sprawdzatypeof prevVersion == 'undefined'
. Jest dużo bardziej niezawodne w użyciutypeof
podczas sprawdzania, czy zmienna jest niezdefiniowana ... zobacz tutaj, aby dowiedzieć się, dlaczego: stackoverflow.com/a/3550319/130691Na szczęście są teraz związane z tym wydarzenia (od wersji Chrome 22 i 25 dla zdarzeń aktualizacji).
W przypadku zainstalowanego wydarzenia:
W przypadku zdarzenia OnUpdateAvailable:
Ważny fragment dotyczący OnUpdateAvailable z dokumentacji programisty mówi:
źródło
Prosty. Gdy rozszerzenie jest uruchamiane po raz pierwszy, pole
localStorage
jest puste. Przy pierwszym uruchomieniu możesz napisać tam flagę, aby oznaczyć wszystkie kolejne uruchomienia jako nie-pierwsze.Przykład, w background.htm:
EDYCJA: Aby sprawdzić, czy rozszerzenie zostało właśnie zaktualizowane, zapisz wersję zamiast prostej flagi przy pierwszym uruchomieniu, a gdy aktualna wersja rozszerzenia (pobierz ją
XmlHttpRequest
z manifestu) nie jest równa tej przechowywanej wlocalStorage
, rozszerzenie ma został zaktualizowany.źródło
localStorage
się w osobnym oknie i nie jest udostępniana innym kodom i rozszerzeniom na stronie, jak wspomniał @huyz. Jednak w przypadku rozszerzeń tak nie jest.