2012-02-16 21 views
2

私はこれをIE8で動作させようとしていますが、これらについては不平を言っていませんが、完全に無視しています。Storage.prototypeがIE8で動作しない

if(typeof(Storage) != "undefined"){ 
    Storage.prototype.setObject = function(key, value) { 
      this.setItem(key, escape(JSON.stringify(value))); 
    } 

    Storage.prototype.getObject = function(key) {  
     return JSON.parse(unescape(this.getItem(key))); 
    } 
} 

私は試してみてください。

localStorage.setObject("key", <Some object>); 

私はエラー「オブジェクトがこのメソッドをサポートしていません」を取得が発生し、関数がさえ呼ばれていません。もちろん、このコードはChromeとFirefoxでうまく動作し、1980年代のCasioの時計でもうまく動作します。

助けがあれば助かります。

付帯とは全く無関係IE8私は戻って私のオブジェクトを取得するとき、私は、オブジェクトを取得するために二回、それをJSON.parseする必要が...

おかげ ポール

+1

IE8でストレージを拡張できないようです。あまりそれほどあなたができることはないと思います。 –

+0

私はそういうことを恐れていました。あなたが提案したように別の機能を用意して処理することはできません。 –

+0

'エスケープ'と 'unescape'は意味をなさないでしょうし、それは廃止予定です。 – epascarello

答えて

6

あなたが使用したほうが良いと思います組み込みのオブジェクトのプロトタイプを使いこなす代わりに、別の関数を使用します。

function storeObject(key,obj) { 
    localStorage[key] = JSON.stringify(obj); 
} 
function retrieveObject(key) { 
    return JSON.parse(localStorage[key]); 
} 

これは特に、古いブラウザでは、プロトタイプの操作よりも信頼性が高いです。

+1

最後に実際の説明。ありがとう。 – Rob

関連する問題