Ответ 1
if (cookie1 === '9oz' || (window.sessionStorage && window.sessionStorage.getItem('sessionstoragecookie1') === '9oz')) {
// you've got a 9oz reference
} else {
// you haven't :(
}
У меня есть функция проверки 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
}
}
if (cookie1 === '9oz' || (window.sessionStorage && window.sessionStorage.getItem('sessionstoragecookie1') === '9oz')) {
// you've got a 9oz reference
} else {
// you haven't :(
}
if(typeof(sessionStorage) == 'undefined')
{
sessionStorage = {
getItem: function(){},
setItem: function(){},
clear: function(){},
removeItem: function(){}
};
}
А теперь пользуйтесь как обычно. Он всегда вернет NULL
Но я бы рассмотрел этот сценарий
http://code.google.com/p/sessionstorage/
Это включит sessionStorage в каждом браузере.
function checkSessionStorage()
{
return window.sessionStorage;
}
Если это undefined
, то sessionStorage
не поддерживается.
Я бы использовал 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
}
Вы можете попробовать что-то вроде этого: Что он делает, так это то, что если браузер не поддерживает sessionStorage, он очищает сеанс.
try {
sessionStorage.setItem('name','value');
}
catch(e){
if(e.code == 22){
sessionStorage.clear(); }
}