HTML 5本地存储之兼容性与存储监听

HTML 5本地存储之兼容性与存储监听

ID:37914279

大小:50.50 KB

页数:4页

时间:2019-06-02

HTML 5本地存储之兼容性与存储监听_第1页
HTML 5本地存储之兼容性与存储监听_第2页
HTML 5本地存储之兼容性与存储监听_第3页
HTML 5本地存储之兼容性与存储监听_第4页
资源描述:

《HTML 5本地存储之兼容性与存储监听》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、HTML5本地存储之兼容性与存储监听2012-04-2410:08adminHTML5China我要评论(0)字号:T

2、Tonstorage可用时,监听事件并在事件触发时判断是否指定的key,onstorage不可用(IE8以下、Chrome因domain问题)时使用Timer来检查。AD:很早之前调研过HTML5的本地存储-《DOMStorage全解析》,大致上对localStorage、sessionStorage等API做了下了解,但是一直没有机会真正的在项目中使用。终于这次借重构WebIM的机会,对本地存储做了更深入的

3、使用,除了基本的API使用之外还在次基础上封装了一些应用层的库,例如Tab之间的操作同步、Tab之间的请求同步等。本文主要做一个阶段性的经验总结。一、localStorgeonstorage事件的兼容性1.触发情况IE8/IE9/Firefox3.6:在页面A中注册onstorage事件,修改localStorage时,A页面和其他页面都能收到onstorage事件。因此,对于这些浏览器监听onstorage时需要自己判断是否是本页面触发的,并且忽略本页面触发的行为。Chrome12/Firefox4/Opera11/Safa

4、ri5中只有收到由其他页面触发的onstorage事件。此外,Chrome14DEV版本中测试发现,在页面设置了document.domain之后,onstorage事件无论如何都不会触发,此Bug导致在Chrome下无法使用onstorage事件。2.事件注册IE需要注册在document上,其他均注册在window上。JavaScriptCode复制内容到剪贴板1.//IE注册在document上2.if(document.attachEvent&&!K.Browser.opera){3.document.attachEv

5、ent("onstorage",_onstorage(key,callback));4.}5.//其他注册在window上6.else{7.window.addEventListener("storage",_onstorage(key,callback),false);8.};3.事件对象IE中的storageEvent对象不包含key/newValue/oldValue等属性,因此如果想知道是哪个Key的数据发生了变化需要自己处理,其他浏览器则可以直接获得数据。4.数据的获取IE9下在事件触发时尽然无法立即获取到对应key

6、的值,需要使用setTimeout做异步处理。其他浏览器状况良好。二、监听某个Key的变化监听某个key也就是在onstorage的基础上更精细一些,这是之后各种应用的基础。以下为实现方案:1.onstorage可用时,监听事件并在事件触发时判断是否指定的key2.onstorage不可用(IE8以下、Chrome因domain问题)时使用Timer来检查JavaScriptCode复制内容到剪贴板1.varLocalStorage=(function(){2.varls=window.localStorage;3.4.fun

7、ction_onstorage(key,callback){5.varoldValue=ls[key];6./*7.IE下即使是当前页面触发的数据变更,当前页面也能收到onstorage事件,其他浏览器则只会在其他页面收到8.*/9.returnfunction(e){10.//IE下不使用setTimeout尽然获取不到改变后的值?!11.setTimeout(function(){12.e=e

8、

9、window.storageEvent;13.14.vartKey=e.key,15.newValue=e.newValue;1

10、6.//IE下不支持key属性,因此需要根据storage中的数据判断key中的数据是否变化17.if(!tKey){18.varnv=ls[key];19.if(nv!=oldValue){20.tKey=key;21.newValue=nv;22.}1.2.}3.4.if(tKey==key){5.callback&&callback(newValue);6.7.oldValue=newValue;8.}9.},0);10.}11.}12.return{13.getItem:function(key){14.returnl

11、s.getItem(key);15.},16.setItem:function(key,val){17.returnls.setItem(key,val);18.},19.removeItem:function(key,val){20.returnls.removeItem(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。