5

Estoy usando el motor de safari webkit junto con HTML5 y JS para crear una aplicación fuera de línea ahora estoy usando la matriz sessionStorage para almacenar el estado de mi aplicación (simulación).Controlador de eventos de almacenamiento HTML5/JS

el almacenamiento de datos funciona bien con el inspector de la obra funciona bien es el controlador de eventos que no responde

la prueba preformd por Anurag en http://jsfiddle.net/pvRgH/ también no funciona aquí

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

Respuesta

0

Podría usted proporciona más código sobre cómo está almacenando las claves? Funciona para mí en Safari - http://jsfiddle.net/pvRgH/

+0

El enlace que proporcionó el código no arrojó ningún resultado. Verifique la pregunta actualizada para obtener más información sobre el código – Ken

+0

. Entonces, ¿no aparece una alerta indicando que se llamó al controlador de eventos de almacenamiento? ¿En qué versión de Safari estás probando esto? – Anurag

+0

No pasa nada Estoy ejecutando Safari 5.0 (6533.16) MacOSX 10.6.3 – Ken

0

el evento 'almacenamiento' producido por la otra pestaña en el navegador. Cuando cambia el almacenamiento en una página y agrega EventLister también en esta página, la ventana no puede captar el mensaje.

por ejemplo

Usted tiene dos páginas, cambio PageOne el almacenamiento, pageTwo se captura el mensaje de 'almacenamiento' y manejar esto, pero PageOne no pudo atrapar el mensaje.

Cuestiones relacionadas