5

J'utilise le moteur de safari webkit avec HTML5 et JS pour créer une application hors ligne maintenant J'utilise la matrice sessionStorage pour stocker le statut de mon application (simulation).Gestionnaire d'événements de stockage HTML5/JS

les données de stockage fonctionne très bien avec l'inspecteur les fonctions fonctionnent très bien, il est le gestionnaire d'événements qui ne répond pas

le test preformd par Anurag à http://jsfiddle.net/pvRgH/ ne fonctionne pas non plus ici

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"; 
    } 
} 

Répondre

0

pourrait vous fournissez un peu plus de code pour la façon dont vous stockez les clés? Cela marche pour moi sur Safari - http://jsfiddle.net/pvRgH/

+0

Le lien que vous avez fourni, le code ne donne aucun résultat. Vérifiez la question mise à jour pour plus de code – Ken

+0

Il n'y a donc pas d'alerte indiquant que le gestionnaire d'événements de stockage a été appelé pour vous? Quelle version de Safari testez-vous? – Anurag

+0

Rien ne se passe Je cours Safari 5.0 (6533.16) MacOSX 10.6.3 – Ken

0

l'événement « stockage » produit par l'autre onglet dans le navigateur. Lorsque vous modifiez le stockage dans une page et ajoutez également AddEventLister dans cette page, la fenêtre ne peut pas capturer le message.

par exemple

Vous avez deux pages, PageOne modifier le stockage, pageTwo attrapera le message « stockage » et gérer, mais PageOne ne pouvait pas attraper le message.