2011-09-15 14 views
6

Oto mój kod:localStorage Podprogram nie została wywołana

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

powodzeniem wkładać przedmiotów w lokalnej przechowywania i wyświetlania wyniku w „results'-elementu, ale Podprogram nie działa. Odświeżam okna przeglądarki i nie widzę żadnych komunikatów ostrzegawczych. Czemu?

+2

Co się stanie, jeśli użyjesz 'window.addEventListener ('storage', eventHandler, false)', zamiast 'addEL ('storage', eventHandler, false)'. –

Odpowiedz

12

Ponieważ zdarzenia przechowywania nie działają dla tego samego okna/karty. Są uruchamiane tylko dla innych okien/kart, które używają tego samego localStorage. Spróbuj otworzyć dwie karty oddzielania i wstawić niektóre dane do localStorage.

Oto podobna question, który wyjaśnia, jak działa localStorage wydarzenie.

Powiązane problemy