javascript - Why does Internet Explorer sometimes trigger a local storage event before the data's ready? -


this question has answer here:

internet explorer 10 triggers window "storage" event before has access new value. have listener "storage" event reacts new data being set doesn't have access it. problematic because listener isn't able react actual new data.

why problem happen, , can fix it?

this issue has been raised here: localstorage.getitem returns old data in ie 9

here's solution i've tested in ie10 , expect work same in ie8 , ie9:

first, javascript components don't listen window "storage" event directly instead listen 'event dispatcher' created. event dispatcher listens window "storage" event , triggers backbone event. delay eventdispatcher's storage event trigger long enough ie catch up. using underscore.js's defer() method, i'm able consistent behavior across browsers without impact on user experience.

here's dispatchstorageevent() method looks like:

$(window).on('storage', dispatchstorageevent); function dispatchstorageevent(event) {   _.defer(function() {     var originalevent = json.parse(event.originalevent);     ...     eventdispatcher.trigger("storageevent:" + originalevent.key, originalevent.newvalue);   }, event); } 

Comments

Popular posts from this blog

c# - Send Image in Json : 400 Bad request -

jquery - Fancybox - apply a function to several elements -

An easy way to program an Android keyboard layout app -