5

Ben şimdi benim uygulama (simülasyonu) durumunu saklamak için sessionStorage dizi kullanıyorum bir çevrimdışı uygulama oluşturmak için birlikte HTML5 ve JS ile safari WebKit'in motorunu kullanıyorum.HTML5/JS depolama olay işleyicisi

depolama veri Olabilir o http://jsfiddle.net/pvRgH/ de Anurag tarafından preformd testi de burada

window.addEventListener('storage', storageEventHandler, false); 
function storageEventHandler(evt){ 
    alert("storage event called key: " + evt.key); 
    switch(evt.key){ 
     case 'bat1': 
     case 'bat2': batteryDCMeter(); break; 
     case 'extPowerOn': rechargeBattery(); break; 
    } 
} 

function load() 
{ 
    dashcode.setupParts(); 
    //set HTML 5 key/value's 
    sessionStorage.setItem('bat1', 'OFF'); 
    sessionStorage.setItem('bat2', 'OFF'); 
    sessionStorage.setItem('bat1DC', '26.2'); 
    sessionStorage.setItem('bat2DC', '26.2'); 
} 

function bat1OnOff(event) 
{ 
    if(sessionStorage['bat1'] == 'OFF'){ 
     sessionStorage['bat1'] = 'ON'; 
    }else{ 
     sessionStorage['bat1'] = "OFF"; 
    } 
} 


function bat2OnOff(event) 
{ 
    if(sessionStorage['bat2'] == 'OFF'){ 
     sessionStorage['bat2'] = 'ON'; 
    }else{ 
     sessionStorage['bat2'] = "OFF"; 
    } 
} 

cevap

0

çalışmıyor

yanıt vermiyor olay işleyicisi var fonksiyonları iyi çalışır müfettiş ile çalışıyor Anahtarları nasıl sakladığınıza dair daha fazla kod sağlıyorsunuz? Bu Safari'de benim için çalışıyor - depolama olayı başka pencereden tetiklenir eğer http://jsfiddle.net/pvRgH/

+0

Kodu verdiğiniz bağlantı hiçbir sonuç vermez. Daha fazla kod için güncellenmiş soruyu kontrol edin – Ken

+0

Bu nedenle, depolama olay işleyicisinin sizin için çağrıldığını gösteren bir uyarı görünmüyor mu? Hangi sürümü Safari üzerinde test ediyorsunuz? – Anurag

+0

Ben Safari 5.0 koşuyorum oluyor Hiçbir şey (6533,16) MacOSX 10.6.3 – Ken

0

tarayıcıdaki diğer sekme tarafından oluştu 'depolama' olayı. Bir sayfada depolamayı ve bu sayfada da addEventLister'ı değiştirdiğinizde, pencere mesajı yakalayamaz. Örneğin

için

You have iki sayfa, PageOne değişiklik depolama, pageTwo 'depolama' mesajı yakalamak ve bu idare, ancak PageOne mesaj yakalayamadım olacaktır.

İlgili konular