У меня были проблемы с поиском актуального ответа на этот вопрос, и у меня не всегда есть время, чтобы ответить на вопросы здесь, поэтому я решил опубликовать это, чтобы я мог ответить на свой вопрос, так как я нашел решение.
Я делаю веб-расширение для Chrome и Firefox.Firefox имеет такую проблему, что когда я вызываю фоновую функцию, которая устанавливает некоторые данные для переменной на фоновой странице со страницы параметров JS, а затем закрываю страницу параметров, я получаю сообщение об ошибке «Не удается получить доступ к мертвому объекту», когда фонкод позже пытается получить доступ к переменной, которая была установлена.Вот код:
options.js
formInOptions.addEventListener('submit', function(e){
e.preventDefault();
chrome.extension.getBackgroundPage().defaults({
keyname: e.target['form-field'].value
}, function(){
// data saved cb
});
});
background.js
function defaults(oNewDefaults) {
// Global oDefaults already exists, and trying to access this after the options page is closed causes the error.
chrome.storage.local.get({
config: {}
}, function(data) {
let config = data.config;
config.defaults = config.defaults || {};
config.defaults = Object.assign(config.defaults, oNewDefaults); // Merge incoming obj into existing obj
chrome.storage.local.set({
config: config
}, function() {
oDefaults = config.defaults;
});
});
};