Отловить событие 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, время: 21:39. |