Как расширение может узнать, что оно запускается впервые или только что было обновлено, чтобы расширение могло выполнять определенные действия? (например, откройте страницу справки или обновите настройки)
98
Как расширение может узнать, что оно запускается впервые или только что было обновлено, чтобы расширение могло выполнять определенные действия? (например, откройте страницу справки или обновите настройки)
Ответы:
В более новых версиях Chrome (начиная с Chrome 22) вы можете использовать
chrome.runtime.onInstalled
событие, которое намного чище.Пример:
// 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 + "!"); } });
источник
Обновленный ответ, чтобы отразить v3 манифеста:
В Chromium теперь есть набор API-интерфейсов chrome.runtime , которые позволяют получить версию расширения.
Чтобы получить текущую версию:
Чтобы прослушать, когда расширение было впервые установлено, когда расширение обновляется до новой версии и когда Chromium обновляется до новой версии, вы можете использовать
onInstalled
событие.Вот и все!
Старый ответ, до 2011 г.
Если вы хотите проверить, было ли расширение установлено или обновлено, вы можете сделать что-то вроде этого:
источник
prevVersion == 'undefined'
... он проверяетtypeof prevVersion == 'undefined'
. Его гораздо надежнее использоватьtypeof
при проверке того, не определена ли переменная ... см. Здесь, чтобы узнать, почему: stackoverflow.com/a/3550319/130691К счастью, теперь для этого есть события (начиная с версии Chrome 22 и 25 для событий обновления).
Для установленного события:
Для события OnUpdateAvailable:
В важном отрывке из документации разработчика о OnUpdateAvailable говорится:
источник
Просто. При первом запуске расширения поле
localStorage
пусто. При первом запуске вы можете написать там флаг, чтобы отмечать все последующие прогоны как не первые.Пример в background.htm:
РЕДАКТИРОВАТЬ: чтобы проверить, было ли только что обновлено расширение, сохраните версию вместо простого флага при первом запуске, а затем, когда текущая версия расширения (получить ее
XmlHttpRequest
в манифесте) не совпадает с той, которая хранится вlocalStorage
, расширение имеет был обновлен.источник
localStorage
действительно находится в отдельном окне и не используется совместно с другим кодом и расширениями на странице, как упоминалось в @huyz. Однако для расширений это не так.