Есть ли функция добавления/добавления функции добавления расширений Chrome, которая позволит мне выполнить действие после установки или обновления плагина?
Я хочу выполнить действие после установки моего расширения и только сразу после его установки. Это действие должно выполняться только один раз (после установки или после обновления).
Update
Некоторые люди предложили установить версию расширения в localStorage, проблема в том, что содержимое script, имеющее доступ к localStorage, не загружается на страницу при первом подключении плагина.
AFAIK после установки плагина и использует содержимое script, введенное в вкладку/страницу, страница должна быть перезагружена.
Я не знаю, как получить доступ к localStorage со справочной страницы; localStorage можно получить только из содержимого script.
Чтобы получить номер версии с фоновой страницы в контенте script, необходимо использовать функцию chrome API для выполнения скриптов:
chrome.tabs.executeScript(null, {code:function_to_execute}, function() { // callback });
Однако, когда вы устанавливаете плагин, и страница, на которой этот плагин должен вводить содержимое script в уже загружен, он не вводит содержимое script, вам нужно перезагрузить страницу.
обновление 2
Глядя на некоторые из советов, приведенных более подробно, с целью сохранения номера версии, можно получить доступ к локальному хранилищу исходной страницы. Однако для того, что мне нужно сделать, это перезагрузка определенной вкладки с определенным URL-адресом (чтобы убедиться, что контент script является самой новой версией) после установки или обновления плагина, в конечном итоге оказалось ненужным беспокоиться о том, LocalStorage.
Для того, чтобы оставаться на теме, совет, заданный для написания номера версии, на localStorage (на странице фона), а затем проверки на номер версии в файле манифеста, достаточно хорош, чтобы позволить кому-то запустить script при первом запуске или обновлении.
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