Фон
В настоящее время я создаю расширение для Chrome, собирает файлы cookie для активной вкладки и сохраняет их в chrome.storage.local в виде строки JSON (popup.html) перед перенаправлением в другое всплывающее окно (cookie_popup.html). Сохраненные файлы cookie затем используются для заполнения таблицы для отображения содержимого. Это работает нормально, пока я не переключаюсь между вкладками браузера, я могу открывать и закрывать всплывающее окно (cookie_popup.html) так часто, как я хочу, получая нужный эффект.
Проблема
Когда я перехожу на другую вкладку, таблица больше не заполняется, и chrome.storage.local просто возвращает пустой объект. Похоже, что chrome.storage.local очищен, но только для сохраненных файлов cookie, а не из других сохраненных мной состояний. Я надеюсь, что кто-нибудь может помочь мне понять, почему.
Что я пробовал
Я попытался изменить chrome.storage.local на chrome.storage.sync, ничего не изменилось. Я также позаботился о том, чтобы при загрузке новой вкладки файлы cookie не устанавливались случайно.
код
tabHandler, который устанавливает куки в хранилище (popup.html - вызывается только при нажатии кнопки).
chrome.tabs.query({active: true, currentWindow: true}, tabHandler);
function tabHandler(tabs) {
chrome.cookies.getAll({url: tabs[0].url}, function(cookies) {
chrome.storage.local.set({cookiejar: JSON.stringify(cookies)});
});
}
Заполнение таблицы cookie (cookie_popup.html).
chrome.storage.local.get('cookiejar', function(value) {
try {
let jar = JSON.parse(value.cookiejar);
// ... Snipped ...
} catch (e) {
console.error(e);
warningAlert.style = 'display: block;';
warningAlert.innerText = 'Could not parse cookies; Please restart process.';
}
});
При открытии другой вкладки и открытии всплывающего окна расширения разбор JSON не выполняется, поскольку value.cookiejar - пустой объект.