例子:

<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火狐浏览器和其他高级浏览器的区别的更多相关文章

  1. JS 客户端(浏览器)存储数据之 localStorage、sessionStorage和indexDB

    基本概念 1.localStorage和sessionStorage是HTML5 Web存储的提供的两种存储方式,在IE7以上以及大多数浏览器都是支持的 2.localStorage和sessionS ...

  2. localStorage和sessionStorage区别

    localStorage和sessionStorage一样都是用来存储客户端临时信息的对象. 他们均只能存储字符串类型的对象(虽然规范中可以存储其他原生类型的对象,但是目前为止没有浏览器对其进行实现) ...

  3. localStorage、sessionStorage详解,以及storage事件使用

    有关localStorage和sessionStorage的特性. localStorage本身带有方法有 添加键值对:localStorage.setItem(key,value),如果key存在时 ...

  4. localStorage和sessionStorage区别(包括同源的定义)

    localStorage和sessionStorage一样都是用来存储客户端临时信息的对象. 他们均只能存储字符串类型的对象(虽然规范中可以存储其他原生类型的对象,但是目前为止没有浏览器对其进行实现) ...

  5. cookie、LocalStorage、sessionStorage三者区别以及使用方式

    cookie用来保存客户浏览器请求服务器页面的请求信息 HTML5的WebStorage提供了两种API:localStorage(本地存储)和sessionStorage(会话存储) WebStor ...

  6. JS --- 本地保存localStorage、sessionStorage用法总结

    JS的本地保存localStorage.sessionStorage用法总结 localStorage.sessionStorage是Html5的特性,IE7以下浏览器不支持 为什么要掌握localS ...

  7. localstorage 和 sessionstorage 是什么?区别是什么?

    localstorage 和 sessionstorage 一样都是用来存储客户端临时信息的对象,他们均只能存储字符串类型对象: localstorage生命周期是永久的,这意味着除非用户在浏览器提供 ...

  8. 如何使用T-SQL备份还原数据库及c#如何调用执行? C#中索引器的作用和实现。 jquery控制元素的隐藏和显示的几种方法。 localStorage、sessionStorage用法总结 在AspNetCore中扩展Log系列 - 介绍开源类库的使用(一) span<T>之高性能字符串操作实测

    如何使用T-SQL备份还原数据库及c#如何调用执行? 准备材料:Microsoft SQL Server一部.需要还原的bak文件一只 一.备份 数据库备份语句:user master backup ...

  9. localStorage、sessionStorage用法总结

    1.作用 1.1 共同点:       都是用来存储客户端临时信息的对象.       均只能存储字符串类型的对象(虽然规范中可以存储其他原生类型的对象,但是目前为止没有浏览器对其进行实现). 1.2 ...

随机推荐

  1. ARM9嵌入式学习笔记(1)-Linux命令

    ARM9嵌入式学习笔记(1)-Linux命令 实验1-1-2 Linux常见命令使用 添加用户useradd smb; 设置账户密码passwd smb; 切换用户su - root 关机命令shut ...

  2. .NET中反射机制的使用与分析

    .NET中反射机制的使用与分析 [日期:2008-06-30] 来源:  作者:志伟     .NET反射的定义:审查元数据并收集关于它的类型信息的能力. 元数据是一种二进制信息,用以对存储在公共语言 ...

  3. android——屏幕适配大全(转载)

    http://my.oschina.net/u/2008084/blog/496161 一.适配可行性 早在Android设计之初就考虑到了这一点,为了让app适应标准or山寨屏幕,google已经有 ...

  4. Django 运行报错 ImportError: No module named 'PIL'

    importError: No module named pil WIN7 64位系统安装 Python PIL 首先通过easy_install安装 说找不到pil模块. 第二通过去官网找:http ...

  5. hdu1860

    #include<iostream> #include <stdio.h> #include<string> #include <iomanip> us ...

  6. C++程序设计实践指导1.13自然数集中找合数改写要求实现

    改写要求1:用单链表实现 改写要求2:析构函数中依次将链表结点删除 #include <cstdlib> #include <iostream> using namespace ...

  7. (转+原)ipp "No dlls were found in the Waterfall procedure"

    转自: http://blog.csdn.net/hua_007/article/details/9112909 1,吧 dll的目录放到系统环境变量中 intel 的官方推荐.验证是ok的. --- ...

  8. DOT + graphviz 轻松画图

    一.简介DOT & graphviz1. DOT    DOT是一种文本图形描述语言.DOT语言文件通常具有.gv或是.dot的文件扩展名.当然,在编写好.dot或者.gv的文件之后,需要有专 ...

  9. List是线程安全的吗?如果不是该怎么办呢?安全的List对性能的影响有多大呢?

    测试条件: 开启2个并行执行任务,往同一个list对象写入值 测试代码: ; static List<int> list = new List<int>(); static v ...

  10. [TYVJ] P1030 乳草的入侵

    乳草的入侵 背景 Background USACO OCT09 6TH   描述 Description Farmer John一直努力让他的草地充满鲜美多汁的而又健康的牧草.可惜天不从人愿,他在植物 ...