我有一个cookie检查器函数,它在var'cookie1'中存储一个值变量。还有一个sessionStorage存储cookie。
if (cookie1 == '9oz' | sessionStorage.getItem('sessionstoragecookie1') == '9oz')
{
// execute code 1
}
else
{
// execute code 2
}
但IE6和IE7不支持sessionStorage。所以它抛出一个错误并打破整个脚本。我可以做这样的事,但这绝对不优雅。最优雅的解决方法是什么?
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(); }
}