2011-08-25 12 views
13

私はcookieチェッカー機能を持っています。これはvar 'cookie1'に値の変数を格納します。 そして、sessionStorageストレージクッキー。sessionStorageのサポートを確認する最もエレガントな方法は?

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

しかし、IE6とIE7ではsessionStorageはサポートされていません。そのため、エラーが発生し、スクリプト全体が中断されます。私はこれのようなことをすることができますが、これは絶対にエレガントではありません。これを最もうまく処理する方法は何ですか?それはundefinedある場合

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 
     } 
} 

答えて

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

悲しいことに、この部分の&& window.sessionStorage.getItem( 'sessionstoragecookie1')== '9oz' 'はオブジェクトまたはメソッドをスローしますが、Internet Explorer 6/7ではサポートされていません。 – user900973

+5

@ user900973:まず、window.sessionStorageが存在するかどうかをチェックするので、しないでください。そのコードは実行される場合にのみ実行されます。 – Matt

2
function checkSessionStorage() 
{ 
    return window.sessionStorage; 
} 

は、その後sessionStorageがサポートされていません。

+1

上記のコードで 'if(typeof(sessionStorage)!= 'undefined')'の代わりにこれを使用する利点は何ですか? – user900973

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

そして今、いつものように使用します。それは、常にNULL

を返します。しかし、私はこのスクリプト

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

これは、すべてのブラウザでのsessionStorageを可能にするを検討します。

0

次のようなことを試すことができます。 ブラウザがsessionStorageをサポートしていない場合、セッションがクリアされます。

try { 
    sessionStorage.setItem('name','value'); 
} 
catch(e){ 
if(e.code == 22){ 
    sessionStorage.clear(); } 
} 
関連する問題