Существует ли функция Chrome после установки расширения / API, которая позволит мне выполнить действие после установки или обновления плагина?
Я хотел бы выполнить действие после установки моего расширения, и толькосразу после его установки.Это действие должно выполняться только один раз (после установки или после обновления) расширения.
Обновление
Некоторые люди предложили установить версию расширения в localStorage, проблема, с которой яесть то, что скрипт контента, который имеет доступ к localStorage, не загружается на страницу при первой установке плагина.
AFAIK после того, как плагин установлен, и он использует скрипт контента, внедренный во вкладку / страницу, страница должна быть перезагружена.
Я не знаю, как получить доступ к localStorageс фоновой страницы;Доступ к localStorage возможен только из скрипта контента.
Чтобы получить номер версии с фоновой страницы для скрипта содержимого, необходимо использовать функцию API Chrome для выполнения скриптов:
chrome.tabs.executeScript(null, {code:function_to_execute}, function() { // callback });
Однако при установкеплагин, и страница, в которую этот плагин должен внедрить скрипт контента, уже загружена, он не внедряет скрипт контента, вам необходимо перезагрузить страницу.
update 2
Lookingпо некоторым советам, представленным более подробно, для сохранения номера версии можно получить доступ к localStorage фоновой страницы.Тем не менее, для того, что мне нужно сделать - перезагрузить определенную вкладку по определенному URL-адресу (чтобы убедиться, что скрипт контента - самая новая версия) после установки или обновления плагина, в итоге не нужно было беспокоиться о localStorage.
Ради того, чтобы оставаться в теме, совет относительно записи номера версии в localStorage (на фоновой странице) и последующей проверки номера версии в файле манифеста достаточно хорош, чтобы позволить кому-то запуститьСкрипт при первой установке / обновлении.
HowTo
Сделать файл манифеста доступным для фоновой страницы (примечание: это взято из другого места, я не беру на себя ответственность, но не могу вспомнить источник, еслизнаете, дайте мне знать, и я добавлю его).
// MAKE MANIFEST FILE AVAILABLE
chrome.manifest = (function() {
var manifestObject = false;
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
manifestObject = JSON.parse(xhr.responseText);
}
};
xhr.open("GET", chrome.extension.getURL('/manifest.json'), false);
try {
xhr.send();
} catch(e) {
console.log('Couldn\'t load manifest.json');
}
return manifestObject;
})();
Теперь вы можете получить доступ к своему номеру версии следующим образом: chrome.manifest.version
Чтобы написать в localStorage, просто передайте его какитак: localStorage['my_plugin_version'] = chrome.manifest.version