localStorage兼容方案

localStorage是H5的存储方案,各大浏览器支持都至关不错,惟一悲催的就是IE,这个浏览器界的另类老是显得格格不入。javascript

IE “Internet选项”->“安全”中有一个“启动保护模式”的单选项,在选中的状况下localStorage是没法使用的,直接提示“拒绝访问”,就算不勾选,下次打开IE时也颇有可能弹出“是否启用保护模式”的提示,此时除了作兼容没有更好的办法html

兼容方案一:userDatajava

userData是IE专属的浏览器存储机制,注意IE8+不支持(你说悲催不悲催)。userData的原理网上不少,就再也不赘述,您能够点击下方有参考资料查看,这里直接贴出代码浏览器

var box = document.body || document.documentElement || document.getElementsByTagName('head')[0];
var o = document.createElement("input");
o.type = "hidden";
o.style.display = "none";
o.addBehavior("#default#userData");
box.appendChild( o );
var exDate = new Date();
exDate.setDate(exDate.getDate()+365);
o.expires = exDate.toUTCString();//设定过时时间
var FileName = "localStorageKeyCache";
var cacheName = "kv";

o.setAttribute( cacheName , data.join(",") );
o.save( FileName );

o.load( FileName );
var getData = o.getAttribute( cacheName );
if( getData ){
   console.log( getData );
}

userData本质上是一个文件,所以存储的时候须要提供文件名,而后就能够经过setAttribute设置key/value,删除能够经过removeAttribute方法,无论对userData作什么修改最后都须要经过save()方法进行保存安全

读取userData必须先用load()方法加载文件,而后用getAttribute获取cookie

因为userData仅支持IE8如下的浏览器,IE9,10,11就的另想办法app

兼容方案二:cookiespa

cookie一直都是localStorage兜底的办法,无论哪一个版本的IE都支持,只惋惜存储的数据少了点。cookie存储数据网上不少教程,这里再也不赘述.net

 

总结:htm

localStorage兼容,简单的就直接判断能用就用,不行就用cookie,我的感受userData实在鸡肋,直接用cookie更方便

 

参考资料:

http://www.cnblogs.com/xiaohuochai/p/6595959.html

http://www.cnblogs.com/QLeelulu/archive/2008/03/29/1129322.html

http://blog.csdn.net/csyuyaoxiadn/article/details/12836955

相关文章
相关标签/搜索