Событие, которое должно сработать при изменении localStorage, похоже, не содержит информации в Firefox.
Я установил следующий обработчик событий:
function storageEventHandler(e){
alert("key " + e.key);
alert("oldValue " + e.oldValue);
alert("newValue " + e.newValue);
alert("url " + e.url);
}
window.addEventListener('storage', storageEventHandler, false);
, который должен запускаться следующим образом:
localStorage.setItem('foo', 'bar');
Однако все свойствав случае (например, e.key и все остальное) все не определены.Я использую Firefox 3.16.Почему свойства события не определены?
РЕДАКТИРОВАТЬ.Вот весь код, который я использую.Событие хранилища запускается в Firefox 3.16, но не в Firefox 4.0b8
Также важно, что я запускаю его из XAMPP http://localhost/index.html Запуск его из файла: // заставляем его умереть localStorageNULL?
<!DOCTYPE html5>
<html lang="en">
<head>
<script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script>
$(function() {
var edit = document.getElementById('edit');
$(edit).blur(function() {
localStorage.setItem('todoData', this.innerHTML);
});
// when the page loads
if (localStorage.getItem('todoData')) {
edit.innerHTML = localStorage.getItem('todoData');
}
window.addEventListener('storage', storageEventHandler, false);
function storageEventHandler(e){
alert('localStorage event fired')
}
});
</script>
</head>
<body>
<header>
<h1> My Simple To-Do List </h1>
</header>
<section>
<ul id="edit" contenteditable="true">
<li></li>
</ul>
</section>
<em>Add some items, and refresh the page. It'll remember what you typed.</em>
</body>
</html>
РЕДАКТИРОВАТЬ # 2: Вот более простой пример, который показывает проблему между браузерами ...
<html>
<head>
<script>
function storageEventHandler(e){
alert('localStorage event fired')
}
window.addEventListener('storage', storageEventHandler, false);
localStorage.setItem('foo', 'bar');
alert('ok')
</script>
</head>
<body>
Test
</body>
</html>