2011-09-15 18 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 का उपयोग करते हैं। दो अलग-अलग टैब खोलने का प्रयास करें और एक में कुछ डेटा localStorage पर डालें।

यहां एक समान question है जो बताता है कि localStorage ईवेंट कैसे काम करता है।

संबंधित मुद्दे