2013-10-03 20 views
10

localStorage değiştirildiği zaman bildirim almam gerekiyor. Bu kod, Firefox'ta (24) iyi çalışır, ancak Chrome 29 (veya 30) veya IE 10'da çalışmaz. Ayrıca, yerel bir dosyada (file:///) kullanarak test ederken değil, canlı bir sunucuda çalışır.localStorage olay dinleyicisi, Chrome'da yerel dosya için yanmıyor

<!DOCTYPE html> 
<html> 
<head> 
    <title>Index</title> 
    <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      $('#submit').click(function() { 
       console.log('Clicked'); 
       if($('#username').val() != "") 
        localStorage.setItem('someItem', 'someValue'); 
      }); 
      $(window).bind('storage', function(e) { 
       alert('change'); 
      }); 


     }); 
    </script> 
</head> 
<body> 
<input type="text" id="username" name="username" value="" /> 
<a href="#" id="submit">Click me</a> 
<p id="result"></p> 
</body> 
</html> 

Chrome'da bu sorun nedir: İşte

kodudur? Gerekirse iki sekme açıyorum.

cevap

11

Yalnızca olayı "diğer" sekmelerde/pencerelerde, ancak verileri değiştiren birinde (bu, sorunuzda biraz belirsizdir, bu yüzden yanlış anlaşılırsa lütfen beni düzeltin) tetikleyecektir. bazı tarayıcılarda

olacak kısıtlamaları sayfası güvenlik nedeniyle dosya protokolü (file:///) den çalışıyorsa:

When the setItem(), removeItem(), and clear() methods are called on a Storage object x that is associated with a local storage area, if the methods did something, then in every Document object whose Window object's localStorage attribute's Storage object is associated with the same storage area, other than x, a storage event must be fired, as described below.

Source W3C

Güncelleme açıklamalara dayanarak cevap tamamlamak için .

Chrome'da Eğer argüman --allow-file-access-from-files sağlayarak bu geçersiz kılabilirsiniz: Eğer diğer tarayıcılar ile benzer bir şey yapabilirim

chrome.exe --allow-file-access-from-files 

emin değilim. Canlı bir senaryoda sürprizlerle karşılaşmamak için yerel bir sunucuyla (örn. Mongoose gibi) test etmenizi tavsiye ederim.

+0

W3C'nin özelliklerini okudum, sanırım anlıyorum, benim sorunum iki sekme açıyorum, tab2'de, localStorage değerini değiştirdim, ancak tab1'in hiçbiri olmuyor. Chrome 29 sürümünü denediniz mi? –

+0

@TrungHuynh Lütfen test edebileceğim bir keman sağlayın. – K3N

+0

İşte işte! http://jsfiddle.net/4ftxj/! Ancak, tam olarak çalışması için iki sekmeye ihtiyaç vardır, çünkü belirtimi takip et, localStorage'ı değiştiren sekmeyi dinleyemez. –

İlgili konular