2011-09-15 6 views
6

を呼び出されません私のコードです:のlocalStorage EventHandlerはここ

<script type="text/javascript"> 
    function getLocalStorage() { 
     try { 
      if (!! window.localStorage) return window.localStorage; 
     } catch(e) { 
      return undefined; 
     } 
    } 

    function getAddEventListener() { 
     try { 
      if(!! window.addEventListener) return window.addEventListener; 
     } catch(e) { 
      return undefined; 
     } 
    } 

    function eventHandler(e) { 
     alert("here we are = " + e.storageArea.traveler); 
    }  

    function testStorage() {  
     var db = getLocalStorage(); 
     var addEL = getAddEventListener(); 

     if(addEL) { 
      addEL('storage', eventHandler, false); 
     } else { 
      alert('This browser does not support event listeners'); 
     } 

     db.setItem('traveler', 'Bill'); 
     db.setItem('destination', 'Ventura'); 
     db.setItem('transportation', 'Airplane'); 

     document.getElementById('results').innerHTML = db.getItem('destination'); 
    } 
</script> 

</head> 

<body onload="testStorage();"> 
    <div id="results"> </div> 
</body> 

</html> 

それが正常に「results'要素にローカルストレージと表示結果に項目を挿入しますが、EventHandlerは動作しません。ブラウザのウィンドウが更新され、警告メッセージが表示されません。どうして?

+2

'addEL( 'storage'、eventHandler、false)'ではなく 'window.addEventListener( 'storage'、eventHandler、false)'を使用するとどうなりますか? –

答えて

12

同じウィンドウ/タブでストレージイベントが機能しないためです。それらは同じlocalStorageを使用する他のウィンドウ/タブに対してのみ起動されます。 2つのタブを開き、あるデータにlocalStorageのデータを挿入してみてください。

localStorageイベントの仕組みについては、questionと同じです。

関連する問題