Отловить событие storage
Добрый вечер всем любителям DOM'а :)
Я тут пытаюсь словить событие storage хранилища html5 используя такой код:
window.addEventListener('storage', onStorageEvent, false);
и такую функцию onStorageEvent:
function onStorageEvent(storageEvent){
alert("storage event");
}
но у меня нет никаких алертов когда я наверняка знаю, что значение ключа в хранилище изменяется. Это потому что я немного черный или я что-то делаю не так? |
Событие возникает только при изменении хранилища в других вкладках (окнах).
Пример: открой консоль тут, на форуме, запусти код: window.onstorage = console.log.bind(console) Открой дубликат вкладки. Увидишь вывод событий в консоль. |
var supports_html5_storage = function(){//checked on support properties storage in browsers
try{
return 'Storage' in window && window['Storage'] !== null;
}catch(e){
return false;
}
};
window.onload = function(){
if(supports_html5_storage){
window.addEventListener('storage',function(e){get_event_of_storage(e);},false);
var get_event_of_storage = function(e){
var state;
if(e.state != null){//checked exist parameter "state" of storage data
state = e.state;
alert(state);
}
}
}
}
|
Спасибо, ребят, я все осознал)
|
kotamirov, а в каких случаях код на третьей строчке может бросить исключение?
И твой код абсолютно ничего не поясняет. |
Цитата:
|
Цитата:
Смотри, ни один браузер не поддерживает сверховую технологию ZdelatyZayebis. Используем твой прием для теста:
function test() {
try{
return 'ZdelatyZayebis' in window && window['ZdelatyZayebis'] !== null;
}catch(e){
alert('Исключение!!!');
return false;
}
}
test();
Как видишь - никакого исключения!!! |
Цитата:
Вот так, ибо наблюдай прекрасное, должно работать! try { return 'localStorage' in window && window['localStorage'] !== null; } catch (e) { return false; } } |
Цитата:
Да и какая разница - существует или не существует. Суть в том что исключение не будет никогда брошено. То есть этот абсолютно бессмысленная обертка в try..catch Народ, ну кивните чтоли, а то он мне не верит)) |
Цитата:
Кстати, где сказано что в браузерах с поддержкой localStorage/sessionStorage должен быть определен конструктор Storage? (а то я чутка не уверен что проверка верная) |
| Часовой пояс GMT +3, время: 09:29. |