Подтвердить что ты не робот

Самый элегантный способ проверить поддержку sessionStorage?

У меня есть функция проверки cookie, в которой хранится переменная значения в var 'cookie1'. И cookie хранилища sessionStorage.

if (cookie1 == '9oz' | sessionStorage.getItem('sessionstoragecookie1') == '9oz')
{
    // execute code 1
}
else
{
    // execute code 2
}

Но sessionStorage не поддерживается в IE6 и IE7. Таким образом, он выдает ошибку и разбивает весь script. Я мог бы сделать что-то подобное, но это абсолютно не изящно. Каков самый элегантный способ работы с этим?

if (cookie1 == '9oz')
{
    // execute code 1
}
else
{
    if (typeof(sessionStorage) !='undefined')
    {
        if (sessionStorage.getItem('sessionstoragecookie1') == '9oz')
        {
            // execute code 1
        }
        else
        {
            // execute code 2
        }
    }

    else
        {
            // execute code 2
        }
}
4b9b3361

Ответ 1

if (cookie1 === '9oz' || (window.sessionStorage && window.sessionStorage.getItem('sessionstoragecookie1') === '9oz')) {
    // you've got a 9oz reference 
} else {
    // you haven't :(
}

Ответ 2

if(typeof(sessionStorage) == 'undefined')
{
    sessionStorage = {
        getItem: function(){},
        setItem: function(){},
        clear: function(){},
        removeItem: function(){}
    };
}

А теперь пользуйтесь как обычно. Он всегда вернет NULL

Но я бы рассмотрел этот сценарий

http://code.google.com/p/sessionstorage/

Это включит sessionStorage в каждом браузере.

Ответ 3

function checkSessionStorage()
{
   return window.sessionStorage;
}

Если это undefined, то sessionStorage не поддерживается.

Ответ 4

Я бы использовал try/catch, чтобы проверить, поддерживает ли браузер sessionStorage.

function isSessionStorageSupported() {
    var storage = window.sessionStorage;
    try {
      storage.setItem('test', 'test');
      storage.removeItem('test');    
      return true;
    } catch (e) {
      return false;
    }
}

Используйте функцию как это:

 if (isSessionStorageSupported()) {
   // do something with it
 } else {
  // have a fallback code here
}

Ответ 5

Вы можете попробовать что-то вроде этого: Что он делает, так это то, что если браузер не поддерживает sessionStorage, он очищает сеанс.

try { 
   sessionStorage.setItem('name','value'); 
}
catch(e){
if(e.code == 22){ 
   sessionStorage.clear(); }
}