chrome,  safari, firefox, ie 9都支持 localStorage.  但可恶的是,中国 ie 6 占有最大的比例。 使用 cookie 不但容量有限,而且给我们增加了不少的带宽,也进行影响网站的性能。

所以我写了 localStorage.js 来模拟 localStorage, 这样其它js 就跨浏览器地使用localStorage了.

代码

if(!window.localStorage && /MSIE/.test(navigator.userAgent)){ 
    if(!window.UserData) { 
        window.UserData = function(file_name) { 
            if(!file_name) file_name="user_data_default"; 
            var dom = document.createElement('input'); 
            dom.type = "hidden"; 
            dom.addBehavior ("#default#userData"); 
            document.body.appendChild(dom); 
            dom.save(file_name); 
            this.file_name = file_name; 
            this.dom = dom; 
            return this; 
        };

window.UserData.prototype = { 
            setItem:function(k, v) 
            { 
                this.dom.setAttribute(k,v); 
                this.dom.save(this.file_name); 
            }, 
            getItem:function(k){ 
                this.dom.load(this.file_name); 
                return this.dom.getAttribute(k); 
            }, 
            removeItem:function(k){ 
                this.dom.removeAttribute(k); 
                this.dom.save(this.file_name); 
            },

clear:function() { 
               this.dom.load(this.file_name); 
               var now = new Date(); 
               now = new Date(now.getTime()-1); 
               this.dom.expires = now.toUTCString(); 
               this.dom.save(this->file_name); 
            } 
        }; 
    } 
    window.localStorage= new window.UserData("local_storage"); 
}

缺陷

userdata有个缺陷是不支持跨目录存储。

这个实现要求 使用 localStorage的时候,只使用 setItem, getItem, removeItem接口, 而不能直接使用 localStorage.your_key 的方式。

IE 之 userData 模拟 localStorage的更多相关文章

  1. 如何在 ie6 中使用 "localStorage"

    好吧,我只是个标题党,ie6 下根本无法使用跟 h5 沾边的 localStorage.今天要向大家介绍的是 ie 特有的 userData 的存储方式,并且对它进行封装,使得不支持 localSto ...

  2. localStorage.ie6.js

    !window.localStorage && function() { window.localStorage = {}; var prefix = 'data-userdata' ...

  3. html5移动web开发笔记(一)Web 存储

    localStorage - 没有时间限制的数据存储 localStorage 方法 localStorage 方法存储的数据没有时间限制.第二天.第二周或下一年之后,数据依然可用. 用户访问页面的次 ...

  4. HTML5本地存储 Web Storage

    Web Storage基本介绍 HTML5 定义了本地存储规范 Web Storage , 提供了两种存储类型 API  sessionStorage 和 localStorage,二者的差异主要是数 ...

  5. XSS 跨站脚本攻击之ShellCode的调用

    1.ShellCode,最初是溢出程序和蠕虫病毒的核心,实际上是指利用一个漏洞是所执行的代码,在XSS跨站脚本中,是指由javascript等脚本编写的XSS利用代码: 2.Exploit,在黑客眼里 ...

  6. 少部分手机浏览器对于COOKIE支持不够导致服务端无法读取session的解决方案

    相信大家都遇到过这样的问题,有手机浏览器的问题导致服务端SESSION读取不正常,目前在项目中的解决方法是采取H5手机本地存储唯一KEY解决的 代码片段 //定义json格式字符串 var userD ...

  7. 用angular实时获取本地localStorage数据,实现一个模拟后台数据登入的效果

    研究了一上午,终于做出了,实时获取本地localStorage来模拟注册登入~~~ <!DOCTYPE html><html><head lang="en&qu ...

  8. js本地存储解决方案(localStorage与userData)

    WEB应用的快速发展,是的本地存储一些数据也成为一种重要的需求,实现的方案也有很多,最普通的就是cookie了,大家也经常都用,但是cookie的缺点是显而易见的,其他的方案比如:IE6以上的user ...

  9. HTML5本地存储localStorage、sessionStorage及IE专属UserData

    By:王美建 from:http://www.cnblogs.com/wangmeijian/p/4518606.html 转载请保留署名和出处! 在客户端存储数据用的最普遍的方式非cookie莫属, ...

随机推荐

  1. 20155213 2016-2017-2 《Java程序设计》第十周学习总结

    20155213 2016-2017-2 <Java程序设计>第十周学习总结 教材学习内容总结 掌握Java Socket编程 理解混合密码系统 掌握Java 密码技术相关API的使用 网 ...

  2. 20155234 2016-2017-2 《Java程序设计》第1 周学习总结

    20155234 2016-2017-2 <Java程序设计>第1 周学习总结 教材学习内容总结 第一周学习了第一章,第一章的内容等同于绪论,向我们介绍了jave的前世今生,以及三大平台. ...

  3. SQL SERVER 无法正常连接的那些事

    1.确保sqlserver服务正常运行. >一般可以从两个地方控制服务,一是系统自带的服务管理器,最快捷的方式是运行“services.msc”,二是使用sqlserver自带的“SQL Ser ...

  4. WPF 窗口句柄获取和设置

    原文:WPF 窗口句柄获取和设置 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/BYH371256/article/details/83347163 ...

  5. 优步司机如何联系客服?uber客服渠道,Uber优步司机客服渠道

    预约客服导航 为了更好的快速.有效地解决您的疑问,Uber优步从今日起开通了在线客服平台.如果您通过司机服务/常见问题没有找到您需要的答案,您可以通过点击下方的“进入在线客服平台”与我们的工作人员在线 ...

  6. Mysql 5.5从零开始学阅读笔记

    第一章 1.什么是数据库? 数据库包含两层含义:保管数据的“仓库”,以及数据管理的方法和技术. 2.表 行被称为记录,列被称为字段 3.主键 primary key,用于唯一标识表中的每一条记录,主键 ...

  7. 利用 Intel Realsense做SLAM开发(一)

    最近手里拿到一台Realsense D435,就是这个: https://click.intel.com/intelr-realsensetm-depth-camera-d435.html 所以准备拿 ...

  8. 学习笔记之ubuntu修改固定IP脚本

    一.shell脚本编程 二.正则表达式 三.linux修改IP的方法 #!/bin/bash cd /etc/network/ stty erase '^?' write_interfaces() { ...

  9. idea下增加scala

    1 idea工具下,下载scala插件 2 idea下新建scala工程 File——New——module 如果按照上图,设置后点击下载,出现下图下载过慢情况下, 这里我选择了等待,大概等了半小时才 ...

  10. vue cli 3 +jquery

    const webpack = require('webpack')module.exports = { // baseUrl type:{string} default:'/' // 将部署应用程序 ...