Расширение Chrome после установки / функция API: существует ли оно? - PullRequest
11 голосов
/ 18 декабря 2011

Существует ли функция 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

1 Ответ

3 голосов
/ 18 декабря 2011

Вы можете сделать это, используя фоновую страницу .Когда расширение установлено, фоновая страница открывается в фоновом режиме и, таким образом, выполняется.Чтобы убедиться, что он не выполняется каждый раз, просто сохраните значение в localStorage.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...