Является ли локальное хранилище постоянным? - PullRequest
0 голосов
/ 20 ноября 2011

Я использую локальное хранилище для расширений Chrome. Когда я устанавливаю локальное хранилище, используя

localStorage['tracking'] = false;

... и затем проверьте, установлено ли локальное хранилище с помощью:

if(localStorage['tracking'])
{
    alert('set');
} else {
    alert('Not Set');
    localStorage['tracking'] = true;
}

Работает нормально. Устанавливает отслеживание на true, если не установлено, и остается установленным. Но если я перейду на новую вкладку и на ту же страницу, на которой находился на другой вкладке, она вернется неустановленной.

Есть ли способ сохранить постоянное локальное хранилище даже после закрытия браузера?

Edit: я не устанавливаю элемент массива localStorage вверху, если скрипт. Просто понял, что это может смутить читателей.

Ответы [ 3 ]

1 голос
/ 20 ноября 2011

Попробуйте:

localStorage.setItem('tracking', false);

и

localStorage.getItem('tracking');

Эти методы используются в Спецификации W3C API .

Поскольку упомянутое вами использование не указано, в зависимости от реализации браузера возможно добавление новых свойств к глобальной переменной localStorage в текущем объекте window, которые становятся недоступными при переходе от страницы.

0 голосов
/ 20 ноября 2011

Раньше у меня была такая же проблема. Я хотел бы поделиться своим решением. Однако мой случай может не совпадать с вашим.

В моем случае это был код (localStrage ['xxxx'] = 'xxx';) в скрипте содержимого. Тогда у меня возникла проблема при открытии новой вкладки или открытии новых окон.

Итак, мое решение состоит в том, что я не запускал этот код непосредственно скриптом содержимого. Сценарий содержимого вызовет 'chrome.extension.sendRequest', а background.html установит / прочитает localStrage и вернется к сценарию содержимого.

Это будет код в скрипте контента

chrome.extension.sendRequest({action: 'load'}, function (response) {
            if(response){
                  alert('set');
            } else {
                  alert('Not Set');
                  chrome.extension.sendRequest({action: 'set',value:'true'}, function (response) {});
            }
}

Это будет код в background.html.

chrome.extension.onRequest.addListener(
function(request, sender, sendResponse) {
    if (request.action == 'load') {
        sendResponse(localStorage['tracking']);

            }else if (request.action == 'set') {
                localStorage['tracking']=request.value;
            }
     });
0 голосов
/ 20 ноября 2011

LocalStorage работает только со строками.Проверьте это объяснение.

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