博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
store.js
阅读量:6818 次
发布时间:2019-06-26

本文共 4022 字,大约阅读时间需要 13 分钟。

  hot3.png

store.js 是一个实现了浏览器的本地存储的 JavaScript 封装 API,不是通过 Cookie 和 Flash 技术实现,而是使用 localStorage、globalStorage 和 userData 行为。

示例代码:

// Store 'marcus' at 'username'store.set('username', 'marcus')// Get 'username'store.get('username')// Remove 'username'store.remove('username')// Clear all keysstore.clear()// Store an object literal - store.js uses JSON.stringify under the hoodstore.set('user', { name: 'marcus', likes: 'javascript' })// Get the stored object - store.js uses JSON.parse under the hoodvar user = store.get('user')alert(user.name + ' likes ' + user.likes)

UserData

应用范围

UserData是微软为IE专门在系统中开辟的一块存储空间,所以说只支持Windows+IE的组合,实际测试在2000(IE5.5)、XP(IE6、IE7),Vista(IE7)下都是可以正常使用的。

在哪儿?

在XP下,一般位于C:\Documents and Settings\用户名\UserData,有些时候会在C:\Documents and Settings\用户名\Application Data\Microsoft\Internet Explorer\UserData。

在Vista下,位于C:\Users\用户名\AppData\Roaming\Microsoft\Internet Explorer\UserData。

容量

网页制作完成手册中这样说:

Security Zone

Document Limit (KB)

Domain Limit (KB)

Local Machine

128

1024

Intranet

512

10240

Trusted Sites

128

1024

Internet

128

1024

Restricted

64

640

线上使用时,单个文件的大小限制是128KB,一个域名下总共可以保存1024KB的文件,文件个数应该没有限制。在受限站点里这两个值分别是64KB和640KB,所以如果考虑到各种情况的话,单个文件最好能控制64KB以下。

如何使用?

用下面的JS语句就可以建立一个支持UserData的对象:

o = document.createElement('input');o.type = "hidden";o.addBehavior ("#default#userData");//UserData.o.style.behavior = "url('#default#userData')" ;//上面的语句也是一样的作用document.body.appendChild(o);

说白了UserData就是样式里的一个Behavior,所以这样写也是一样的:

UserData可以绑定在大多数的html标签上,具体为:

A, ACRONYM, ADDRESS, AREA, B, BIG, BLOCKQUOTE, BUTTON, CAPTION, CENTER, CITE, CODE, DD, DEL, DFN, DIR, DIV, DL, DT, EM, FONT, FORM, hn, HR, I, IMG, INPUT type=button, INPUT type=checkbox, INPUT type=file, INPUT type=hidden, INPUT type=image, INPUT type=password, INPUT type=radio, INPUT type=reset, INPUT type=submit, INPUT type=text, KBD, LABEL, LI, LISTING, MAP, MARQUEE, MENU, OBJECT, OL, OPTION, P, PLAINTEXT, PRE, Q, S, SAMP, SELECT, SMALL, SPAN, STRIKE, STRONG, SUB, SUP, TABLE, TEXTAREA, TT, U, UL, VAR, XM

UserData对象有以下的属性和方法:

属性

描述

expires

设置或读取文件过期时间

XMLDocument

读取文件的XML DOM

方法

描述

getAttribute

读取指定属性的值

load

打开文件

removeAttribute

删除指定的属性

save

保存文件

setAttribute

为指定属性赋值

 

UserData文件实际上就是一个XML文件,通过文件名->属性的方式保存字符串,如以下一段代码:

o.setAttribute("code", "hello world!");o.save("baidu");

 执行后,UserData文件夹中会生成一个baidu[1].xml文件,其中的内容是:

在一个文件中可以有多个属性,也就是可以存储多种不同的数据。

在音乐盒链接保存项目里,封装了一个UserData类,这样可以更方便地使用UserData,代码如下:

/** @class 定义userdata的操作 */    var UserData = {    // 定义userdata对象    o : null,    // 设置文件过期时间    defExps : 365,    // 初始化userdate对象    init : function(){        if(!UserData.o){           try{                UserData.o = document.createElement('input');                UserData.o.type = "hidden";                //UserData.o.style.behavior = "url('#default#userData')" ;                UserData.o.addBehavior ("#default#userData");                document.body.appendChild(UserData.o);            }catch(e){                return false;            }        };        return true;    },    // 保存文件到userdata文件夹中 f-文件名,c-文件内容,e-过期时间    save : function(f, c, e){        if(UserData.init()){            var o = UserData.o;                  // 保持对象的一致            o.load(f);               // 将传入的内容当作属性存储            if(c) o.setAttribute("code", c);                 // 设置文件过期时间            var d = new Date(), e = (arguments.length == 3) ? e : UserData.defExps;            d.setDate(d.getDate()+e);            o.expires = d.toUTCString();                    // 存储为制定的文件名            o.save(f);        }    },     // 从uerdata文件夹中读取指定文件,并以字符串形式返回。f-文件名    load : function(f){        if(UserData.init()){            var o = UserData.o;            // 读取文件            o.load(f);                   // 返回文件内容            return o.getAttribute("code");        }    },    // 检查userdata文件是否存在 f-文件名    exist : function(f){        return UserData.load(f) != null;    },    // 删除userdata文件夹中的指定文件 f-文件名    remove : function(f){        UserData.save(f, false, -UserData.defExps);    }    // UserData函数定义结束};

  

转载于:https://my.oschina.net/tiwer/blog/199859

你可能感兴趣的文章
Intersect交集
查看>>
Sencha touch 中的一段源码匿名中定义Function并调用
查看>>
android开发学习 ------- 枚举类型在Android中的用法
查看>>
day14 装饰器模拟验证附加功能
查看>>
c#简单自定义异常处理日志辅助类
查看>>
make: *** No targets specified and no makefile found. Stop.错误
查看>>
闭包的常见用处
查看>>
中联通4月份3G用户净增181.7万总数突破2000万
查看>>
cJSON填坑记
查看>>
css3(border-radius)边框圆角详解(转)
查看>>
Python MySQLdb 使用utf-8 编码插入中文数据
查看>>
hdu1406
查看>>
排序算法一:快速排序
查看>>
Python中的__name__和类
查看>>
Android 开发工具下载中文网站
查看>>
Redis 列表处理
查看>>
Redis常用命令
查看>>
The vim syntax of systemd unit file
查看>>
关于Linux库文件的制作--普通的静态库、动态库
查看>>
正式学习React( 三)
查看>>