#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’ в моем коде.