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