2017-07-30 6 views
0

localestorageのハンドラをネイティブJavaScriptを使用して変更する方法は?ネイティブのjavascriptを使用してlocalestorageのハンドラを変更する方法

私の試みは、次のとおりです。

console.log("START"); 

window.addEventListener('storage',function(e){ 
    if(e.storageArea===sessionStorage){ 
     console.log("storage was changed"); 
    } else { 
    /* else, event is caused by an update to localStorage, ignore it */ 
    console.log("ELSE"); 
    } 

}); 

localStorage.setItem('qweyxcadsadsadsa', "DSADAS"); 

console.log("end") 

しかし、それは動作していない、という問題がありますか?

ありがとうございました!

jsfiddleがあります:

https://jsfiddle.net/1qft6gcb/

+1

[すべてのブラウザでjQueryを使用してlocalStorage変更イベントにバインドするにはどうすればいいですか?](https://stackoverflow.com/questions/4671852/how-to-bind-to-localstorage-change-event-using- jquery-for-all-browsers) – Lewis42

+0

@ Lewis42何ですか?なぜ私の質問に答えているのですか? –

+1

"つまり、ストレージイベントは、localStorageオブジェクトを更新してイベントを発生させたものを除き、すべてのウィンドウ/タブで発生します。 – Lewis42

答えて

0

あなたはsetInterval()を使用して独自のトリガを作成することができます。最初の実行時に、現在の値を保存します。その後、現在の値と前の値を比較し、必要ならトリガして値を更新します。私はそれのために既存のパブ/サブライブラリを使用することをお勧めします。 Amplify.jsは、ローカルストレージとpubsubの両方をカプセル化しますが、非常にうまく動作し、更新が必要ないため、かなり古いです。

関連する問題