chrome.storage, кажется, теряет состояние после переключения назад и вперед между вкладками - PullRequest
0 голосов
/ 03 июня 2019

Фон

В настоящее время я создаю расширение для 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 - пустой объект.

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