Хук/API-функция расширения Chrome после установки: существует ли она?

Есть ли хук/API-функция для расширения Chrome после установки, которая позволит мне выполнить действие после установки или обновления плагина?

Я хотел бы выполнить действие после установки моего расширения, и только сразу после его установки. Это действие должно выполняться только один раз (после установки или после обновления) расширения.

Обновление

Некоторые люди предложили установить версию расширения в localStorage, проблема, с которой я столкнулся, заключается в том, что скрипт контента, имеющий доступ к localStorage, не загружается на страницу при первой установке плагина.

AFAIK после установки плагина и использования им скрипта содержимого, внедренного во вкладку/страницу, страница должна быть перезагружена.

Я не знаю, как получить доступ к localStorage из фоновой страницы; доступ к localStorage можно получить только из скрипта содержимого.

Для получения номера версии из фоновой страницы в скрипт содержимого требуется использование функции API chrome для выполнения скриптов:

chrome.tabs.executeScript(null, {code:function_to_execute}, function() { // callback });

Однако, когда вы устанавливаете плагин, а страница, на которую этот плагин должен внедрить скрипт содержимого, уже загружена, он не внедряет скрипт содержимого, приходится перезагружать страницу.

обновление 2

При более детальном рассмотрении некоторых советов, для сохранения номера версии можно получить доступ к 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

11
задан Victor S 18 December 2011 в 20:49
поделиться