Попытка использовать google.storage.sync.set внутри google.runtime.OnStartup не имеет эффекта

#javascript #google-chrome-extension

#javascript #google-chrome-extension

Вопрос:

Я пытаюсь создать расширение chrome с разрешением «background», что означает, что оно продолжает работать в фоновом режиме, даже если окно chrome закрыто. Однако, если пользователь завершает работу chrome также в фоновом режиме, я хочу сбросить некоторые значения в chrome.storage до значений по умолчанию. Я думал, что создание прослушивателя для события OnStartup сработает, и я бы затем сбросил эти значения. Однако это не работает. По какой-то причине chrome.storage.sync.set не работает должным образом при обратном вызове OnStartup.

При проверке журнала я всегда вижу «Запуск», поэтому, насколько я могу судить, он определенно работает без проблем, хотя, если я позже проверю значения, они останутся такими же, как и до полного закрытия Chrome.

Я уже проверил свой код, чтобы увидеть, изменилось ли значение где-то еще, но, похоже, это не проблема. Чтобы быть уверенным, я попытался прокомментировать все остальное, но это все еще не работает.

Вот код, который у меня есть прямо сейчас (он в моем единственном background.js файл).

 chrome.runtime.onStartup.addListener(function() {
    chrome.storage.sync.set({
        desc: '',
        timer: -1
    }, function () {
        console.log("Startup");
    });
});

chrome.runtime.onInstalled.addListener(function() {
    chrome.storage.sync.set({
        desc: '',
        timer: -1
    }, function () {
        console.log("Installed");
    });
});
  

Для наглядности вот пример внутри моего popup.js файл, в котором значение ‘desc’ изменяется в зависимости от пользовательского ввода. Что бы здесь ни было написано, это значение, которое остается даже после запуска OnStartup, чего не ожидается:

 i_text_pom.oninput = function() {
    chrome.storage.sync.set({desc: i_text_pom.value}, function () {
        console.log("Uus desc on: "   i_text_pom.value);
    });
};
  

Я ожидал, что переменная хранилища ‘desc’ будет просто пустым скриптом, но после перезапуска chrome она остается такой же, как и до полного перезапуска.

Комментарии:

1. В текущем опубликованном коде не показано, где и как вы вводите другое значение, поэтому мы не можем сказать, что это значит: «они остаются такими же, как и раньше».

2. @wOxxOm Извините, я не совсем понял. Не могли бы вы уточнить, какой именно код я должен опубликовать, чтобы помочь? Насколько я понимаю, приведенный код показывает, что при установке расширения в хранилище устанавливаются некоторые пары ключ-значение (desc: «», timer: -1), а затем, когда Chrome снова открывается, эти значения возвращаются к значениям по умолчанию при установке. Я не публиковал код, который изменяет эти значения, например, в popup.js файл, так как я думал, что это избыточно. Значение desc, например, изменяется на основе поля ввода во всплывающем окне.

3. @wOxxOm Хорошо, я добавил пример изменения значения ‘desc’ в моем коде.