localStorage和sessionStorage火狐浏览器和其他高级浏览器的区别
例子:
<script>
window.onload=function(){
var oSetData = document.getElementById('setData');
var oGetData = document.getElementById('getData');
oSetData.onclick=function(){
if(window.localStorage){
console.log('支持');
localStorage.date1 = '{"content":{"img":"/static/img/listico1.jpg","content":"如何采取正确的方式进行救治1","date":"2015年11月28日14:14"}}';
localStorage.date2 = '{"content":{"img":"/static/img/listico2.jpg","content":"如何采取正确的方式进行救治2","date":"2015年11月28日14:14"}}';
localStorage.date3 = '{"content":{"img":"/static/img/listico3.jpg","content":"如何采取正确的方式进行救治3","date":"2015年11月28日14:14"}}';
}
};
oGetData.onclick=function(){
if(window.localStorage){
//var count = 0;
for(var name in localStorage){
console.log(name);
//if(count<localStorage.length){
var str = localStorage[name];
var json = new Function('return '+str)();
console.log(json);
//}
//count++;
}
}
};
};
</script>
<body>
<input id="setData" type="button" value="设置"/>
<input id="getData" type="button" value="获取"/>
</body>
这段测试的代码用调试工具可以看出火狐浏览器和其他高级浏览器(谷歌)的区别,在调试工具中找到localStorage/sessionStorage可以看出,这个时候火狐浏览器是报错的(SyntaxError: missing ] after element list)[native code],我分析的原因是火狐的name值这个时候有9个(可以把代码中var str =.../var json =...都注释掉就可以看到),date1/2/3是设置出来的,后面还有key/getItem/setItem/removeItem/clear/length这些是localStorage/sessionStorage对象的属性和方法,在用for..in..的时候会遍历到它们,当遍历到key方法时,new Function('return '+str)()执行这条语句时就会报错。其他浏览器不会这样,name值只是设置出的三个,用for..in..的时候不会遍历到localStorage/sessionStorage对象的属性和方法。我发现这些浏览器localStorage/sessionStorage的length值是一样的,所以解决方案就是注释里的代码,添加了一个计数器,再进行判断,当count大于length的时候,就不用执行后面的语句(不是我想获取的数据),这样就解决了火狐浏览器兼容问题。要是我有错误的地方请帮忙指出,有更好的方法希望可以交流。
localStorage和sessionStorage火狐浏览器和其他高级浏览器的区别的更多相关文章
- JS 客户端(浏览器)存储数据之 localStorage、sessionStorage和indexDB
基本概念 1.localStorage和sessionStorage是HTML5 Web存储的提供的两种存储方式,在IE7以上以及大多数浏览器都是支持的 2.localStorage和sessionS ...
- localStorage和sessionStorage区别
localStorage和sessionStorage一样都是用来存储客户端临时信息的对象. 他们均只能存储字符串类型的对象(虽然规范中可以存储其他原生类型的对象,但是目前为止没有浏览器对其进行实现) ...
- localStorage、sessionStorage详解,以及storage事件使用
有关localStorage和sessionStorage的特性. localStorage本身带有方法有 添加键值对:localStorage.setItem(key,value),如果key存在时 ...
- localStorage和sessionStorage区别(包括同源的定义)
localStorage和sessionStorage一样都是用来存储客户端临时信息的对象. 他们均只能存储字符串类型的对象(虽然规范中可以存储其他原生类型的对象,但是目前为止没有浏览器对其进行实现) ...
- cookie、LocalStorage、sessionStorage三者区别以及使用方式
cookie用来保存客户浏览器请求服务器页面的请求信息 HTML5的WebStorage提供了两种API:localStorage(本地存储)和sessionStorage(会话存储) WebStor ...
- JS --- 本地保存localStorage、sessionStorage用法总结
JS的本地保存localStorage.sessionStorage用法总结 localStorage.sessionStorage是Html5的特性,IE7以下浏览器不支持 为什么要掌握localS ...
- localstorage 和 sessionstorage 是什么?区别是什么?
localstorage 和 sessionstorage 一样都是用来存储客户端临时信息的对象,他们均只能存储字符串类型对象: localstorage生命周期是永久的,这意味着除非用户在浏览器提供 ...
- 如何使用T-SQL备份还原数据库及c#如何调用执行? C#中索引器的作用和实现。 jquery控制元素的隐藏和显示的几种方法。 localStorage、sessionStorage用法总结 在AspNetCore中扩展Log系列 - 介绍开源类库的使用(一) span<T>之高性能字符串操作实测
如何使用T-SQL备份还原数据库及c#如何调用执行? 准备材料:Microsoft SQL Server一部.需要还原的bak文件一只 一.备份 数据库备份语句:user master backup ...
- localStorage、sessionStorage用法总结
1.作用 1.1 共同点: 都是用来存储客户端临时信息的对象. 均只能存储字符串类型的对象(虽然规范中可以存储其他原生类型的对象,但是目前为止没有浏览器对其进行实现). 1.2 ...
随机推荐
- rhel5.8-LAMP环境搭建
一.LAMP安装前的准备 安装环境:rhel5.8 zabbix-2.4.5 php-5.6.8 MySQL5.6.23 libpng-1.5.9 zlib-1.2.7 (apr,apr ...
- samba服务器加入域控主机所需要修改的配置文件
samba服务器加入域控主机,成为域成员,当用户访问samba服务器上的共享文件时,直接到域控主机上进行认证.samba服务器上不需要像先前一样创建系统用户,创建samba用户及密码. 1.安装环境( ...
- Masonry的一些使用。
除了等距的有问题(懒得改了),其他用过挺正常的,我自己也是刚使用,有问题还请海涵. 地址:http://pan.baidu.com/s/1boyxu8Z
- shell中的退出状态码
shell中的退出状态码最大只有255,如果超过这个值,就会进行取余运算,即如果执行如下命令: exit exitCode 如果exitCode大于255,那么实际的状态码为exitCode % 25 ...
- PHP获取客户端操作系统,浏览器,语言,IP,IP归属地等
<?php class Client { ////获得访客浏览器类型 function Get_Browser(){ if(!empty($_SERVER['HTTP_USER_AGENT']) ...
- ajax 传值 中文乱码问题
使用encodeURI编码内容 var Path = encodeURI("中文.xls"); url: "ashx/Data.ashx?Path =" + P ...
- Struts2 - 常用的constant标签[转]
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-/ ...
- Mysql MERGE 引擎在分表环境下得使用
应用场景:当我们在做分表的时候,通常会把一个大表的数据拆分成若干个分表,这也是数据库优化中的分表概念.随着分表随之而来的问题就是多表查询. 现在有 t1,t2 两张数据表,需要满足不同的查询条件同时从 ...
- Ubuntu中找到并杀死僵尸进程
Ubuntu中产生zombie进程让人很懊恼啊.Windows中在任务管理器里直接找到无响应的进程并结束他就行了,但是ubuntu中需要用命令去解决. System information as of ...
- 生产环境中CentOS7部署NET Core应用程序
NET Core应用程序部署至生产环境中(CentOS7) 阅读目录 环境说明 准备你的ASP.NET Core应用程序 安装CentOS7 安装.NET Core SDK for CentOS7. ...