localStorage eventHandler не вызывается - PullRequest
6 голосов
/ 15 сентября 2011

Вот мой код:

<script type="text/javascript">
    function getLocalStorage() {
        try {
            if (!! window.localStorage) return window.localStorage;
        } catch(e) {
            return undefined;
        }
    }

    function getAddEventListener() {
        try {
            if( !! window.addEventListener ) return window.addEventListener;
        } catch(e) {
            return undefined;
        }
    }

    function eventHandler(e) {
        alert("here we are = " + e.storageArea.traveler);
    }       

    function testStorage() {    
        var db = getLocalStorage();
        var addEL = getAddEventListener();

        if(addEL) {
          addEL('storage', eventHandler, false);
        } else {
            alert('This browser does not support event listeners');
        }

        db.setItem('traveler', 'Bill');
        db.setItem('destination', 'Ventura');
        db.setItem('transportation', 'Airplane');

        document.getElementById('results').innerHTML = db.getItem('destination');
    }   
</script>

</head>

<body onload="testStorage();">
  <div id="results"> </div>
</body>

</html>

Он успешно вставляет элементы в локальное хранилище и отображает результат в элементе «results», но eventHandler не работает.Я обновляю окна браузера и не вижу никаких предупреждений.Почему?

1 Ответ

12 голосов
/ 15 сентября 2011

Поскольку события хранения не работают для одного окна / вкладки. Они запускаются только для других окон / вкладок, которые используют тот же localStorage. Попробуйте открыть две отдельные вкладки и в одну вставить некоторые данные в localStorage.

Вот аналогичный вопрос , который объясняет, как работает localStorage событие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...