Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   событие storage (https://javascript.ru/forum/misc/32691-sobytie-storage.html)

bot87 25.10.2012 18:14

событие storage
 
Привет.
Почему не срабатывает код
window.addEventListener('storage', storageEventHandler(e), false);

function storageEventHandler(e){
    alert("storage event called key: " + e.key );
  
}

//sessionStorage.setItem("someKey", "someValue");
sessionStorage['name1']='holi';

melky 25.10.2012 18:17

потому что скобки вызвают функцию, и в addEventListener передаётся результат её выполнения - undefined.
window.addEventListener('storage', *!*storageEventHandler(e)*/!*, false);

function storageEventHandler(e){
    alert("storage event called key: " + e.key );
  
}

//sessionStorage.setItem("someKey", "someValue");
sessionStorage['name1']='holi';

bot87 25.10.2012 18:39

window.addEventListener('storage', storageEventHandler, false);

function storageEventHandler(){
	alert("storage event called key: " );
  
}

sessionStorage.setItem("someKey", "someValue");
sessionStorage['name1']='holi';


Не срабатывает

melky 25.10.2012 19:54

странно ...

в демках срабатывает
http://html5demos.com/storage-events

vadim5june 25.10.2012 19:58

По моему onstorage работает только при изменении дочернего окна./фрейма а на изменение на своей странице не реагирует
http://all-html5.narod.ru/2/vrem1.htm

bot87 25.10.2012 20:05

ах*****ьная новость.И что теперь делать?Мне нужно сообщение с выводом что такае-то значение сменилось на ...

vadim5june 25.10.2012 20:07

Я точно не знаю-проверь ее во первых-но по примеру моему так получается

bot87 25.10.2012 20:36

пожалуйста пример.:) iMaxmaxmaximus
Дай урок :)

vadim5june 25.10.2012 20:43

Чтото наподобии вот такого
function setStorage(a,v)

{sessionStorage[a]=v;storageEventHandler(a)};
function storageEventHandler(a){
	alert("storage event called key: " )+a;}
setStorage("someKey", "someValue");

devote 25.10.2012 21:02

Цитата:

Сообщение от vadim5june
Я точно не знаю-проверь ее во первых-но по примеру моему так получается

все верно, оно не будет срабатывать в собственном окне, исключение только IE в котором срабатывает в любом случае.

bot87,
в чем сложность сделать обертку?
function sessStorage( key, value ) {
    var currentValue = sessionStorage.getItem( key );
    if ( typeof value !== "undefined" && currentValue !== value ) {
        sessionStorage.setItem( key, value );
        if ( !( window.eval && eval("/*@cc_on 1;@*/") ) ) {
            var e = document.createEvent( 'StorageEvent' );
            e.initStorageEvent( 'storage', false, false, key,
                currentValue, value, location.href, window.sessionStorage );
            window.dispatchEvent( e );
        }
        currentValue = value;
    }
    return currentValue;
}

if ( "addEventListener" in window ) {
    window.addEventListener('storage', storageEventHandler, false);
} else {
    document.attachEvent('onstorage', storageEventHandler );
}
 
function storageEventHandler(e){
    alert("storage event called key: " + e.key );
}

sessStorage("name1", "holi122");


Цитата:

Сообщение от iMaxmaxmaximus
переопредели функции .setItem и .getItem так чтобы они генерировали это событие, всему учить вас

не учи людей плохим манерам.


Часовой пояс GMT +3, время: 17:20.