Могу ли я сделать вывод о доступности sessionStorage из тестирования localStorage?

Если бы я должен был проверить localStorage в браузере пользователей с помощью JavaScript, например.

var hasStorage = (function() {
    try {
        localStorage.setItem(mod, mod);
        localStorage.removeItem(mod);
        return true;
    } catch (exception) {
        return false;
    }
}());

if (hasStorage) {
    // store things in places
}

(от: https://mathiasbynens.be/notes/localstorage-pattern)

Могу ли я сделать вывод (без явных проверок), что если hasStorage === true, то sessionStorage также доступен, или можно ли отключить один при включенном другом?


person tymothytym    schedule 17.04.2017    source источник
comment
localStorage можно отключить в хроме. Нет возможности отключить sessionStorage. Если есть, вывод состоит в том, что если localStorage отключен, sessionStorage также будет отключен. Это можно проверить в хроме, запустив с флагом chromium-browser --disable-local-storage, а затем попытавшись установить sessionStorage   -  person guest271314    schedule 17.04.2017
comment
@blex в той же таблице совместимости Firefox имеет противоположный порядок поддержки. Хотя можно предположить, что при нормальной работе присутствуют и то, и другое, нет никаких спецификаций, подтверждающих такое предположение. Итак, я бы сказал, что на всякий случай хорошо рассматривать их как отдельные объекты.   -  person Vladimir M    schedule 17.04.2017
comment
Интересно, запускал хром с выставленным флагом --disable-local-storage, sessionStorage все равно определялся, пытаюсь поставить localStorage логируется Uncaught TypeError: Cannot read property 'setItem' of null   -  person guest271314    schedule 17.04.2017


Ответы (1)


localStorage не имеет отношения к sessionStorage в хроме. Можно запустить хром с флагом --disable-local-storage, который регистрирует ошибку при попытке установить localStorage

Uncaught TypeError: Cannot read property 'setItem' of null

хотя, похоже, нет официального флага для отключения sessionStorage в List of Chromium Command Переключатели линий. Обратите внимание, что хром построен с использованием исходного кода хрома.

person guest271314    schedule 17.04.2017
comment
Это интересно. Я могу ошибаться, но разве ваше исследование не предполагает, что если localStorage доступен (т.е. не помечен/отключен, как вы показали), то sessionStorage также будет доступен, поскольку он не может (насколько как видно из связанных спецификаций) отключить, чтобы тест не нужно было повторно запускать для обоих? - person tymothytym; 18.04.2017