HTML5 / JS обработчик событий хранения - PullRequest
6 голосов
/ 16 июня 2010

Я использую движок safari webkit вместе с HTML5 и JS для создания автономного приложения, теперь я использую массив sessionStorage для хранения состояния моего приложения (симуляция).

данные хранилища работают нормально с инспектором, функции работают нормально, обработчик событий не отвечает

тест, предварительно сформированный Anurag при http://jsfiddle.net/pvRgH/, также не работает здесь

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

Ответы [ 3 ]

14 голосов
/ 14 ноября 2011

Обработчики событий хранилища запускаются только в том случае, если событие хранилища запускается из другого окна.

Как получить срабатывание события при каждом обновлении localStorage в Safari 5 +?

0 голосов
/ 28 марта 2014

событие 'хранилище' произошло на другой вкладке в браузере. Когда вы изменяете хранилище на одной странице и добавляете addEventLister также на этой странице, окно не может перехватить сообщение.

например

У вас есть две страницы, pageOne меняет хранилище, pageTwo перехватит сообщение «storage» и обработает его, но pageOne не может перехватить сообщение.

0 голосов
/ 16 июня 2010

Не могли бы вы предоставить больше кода для хранения ключей? У меня это работает в Safari - http://jsfiddle.net/pvRgH/

...