前一段做音乐和链接保存项目时用到了UserData,现在上线后效果不错,就把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,所以这样写也是一样的:

<input type=hidden class= storeuserData />
<style>
.storeuserData {behavior:url(#default#userData);}
</style>

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文件,其中的内容是:
<ROOTSTUB code="hello,world!"/>

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

在音乐盒链接保存项目里,封装了一个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函数定义结束
};

后记:感觉这个比cookie应该好点,可以存储比较大的信息.

转载于:https://www.cnblogs.com/suyuan/archive/2008/04/02/1133994.html

UserData使用总结[转载-lanyu]相关推荐

  1. IE userdata

    在Internet Explorer 5中,Microsoft提供了名为userData的客户端持久存储功能.它是通过对CSS行为进行特殊扩展来实现的.这些扩展完全都是非标准的,是 90年代后期浏览器 ...

  2. 记录自定义的代码片段位置

    Xcode中的代码片段默认放在~/Library/Developer/Xcode/UserData/CodeSnippets下, 转载于:https://www.cnblogs.com/JASON-S ...

  3. 第 39 章 ThinkPHP--CURD 操作

    学习ThinkPHP 模型中的 CURD 操作,也就是增删改查.通过 CURD, 我们可以方便快速的对数据库进行操作. 1.数据创建 2.数据写入 3.数据读取 4.数据更新 5.数据删除 一.数据创 ...

  4. [转]UserData使用总结 - lanyu

    UserData使用总结 - lanyu 2007-12-10 10:58 前一段做音乐和链接保存项目时用到了UserData,现在上线后效果不错,就把UserData的一些用法总结出来,大家一同分享 ...

  5. 一些LUA函数(转载)

    转自http://hi.baidu.com/chevallet/item/9a3a6410c20d929198ce3363 一些LUA函数 1.assert (v [, message]) 功能:相当 ...

  6. Android系统源码学习——ramdisk.img、system.img、userdata.img三个文件介绍

    2019独角兽企业重金招聘Python工程师标准>>> Android源码编译后,在out/target/product/generic下生成的三个镜像文件:ramdisk.img, ...

  7. 问题:Unable to find a 'userdata.img' file for ABI armeabi to copy into the AVD folder.

    创建AVD时,发现创建不成功,报错"Unable to find a 'userdata.img' file for ABIarmeabi to copy into the AVD fold ...

  8. Ubuntu12.04下在Android4.0.4源码下载及其编译过程(转载)

    一.下载源码 1.下载工具repo:https://android.googlesource.com/tools/repo/ 在本地目录建个bin的文件夹,进入bin文件夹:通过git下载: [cpp ...

  9. android SDK manager 无法获取更新版本列表【转载】

    http://mirrors.neusoft.edu.cn/eclipse/releases/luna/ 打开这个网址就可以看到adt的详细信息:  http://developer.android. ...

最新文章

  1. 关于Mozilla浏览器不支持innerText的解决办法
  2. Java异常实战——OutOfMemoryError
  3. MyBatis知多少(22)MyBatis删除操作
  4. python对文件夹内文件去重
  5. 【Python基础】字符串专题总结
  6. 乐鑫代理-启明云端分享ESP32系列教程之二:Linux搭建esp-idf环境
  7. 前端教程分享:十行代码实现title滚动显示
  8. 为什么要用Dubbo-远程通信背景
  9. Stream流的收集操作
  10. wine和steam的区别
  11. 129. Sum Root to Leaf Numbers
  12. 使用字符缓冲流读取数据
  13. date 减去固定时长_javascript – 从Date对象减去日/月/年
  14. Kettle 之 javascript字段数据处理
  15. iPhone在scrollview中双击定点放大的代码
  16. 机器学习之特征选择 (feature_selection)
  17. 2018最新游戏蛮牛Egret游戏引擎
  18. python3打包exe失败_python3.7打包成exe就三步
  19. 架构漫谈(一):什么是架构? -王概凯 - 转
  20. 【ZBH选讲·拍照】

热门文章

  1. 友盟用户反馈(官方文档学习而来)
  2. 【SDOI2008】Sandy的卡片 DP
  3. adb shell读取设置手机ocd值以及ocd介绍
  4. PLC PID优化系列之非线性参数整定(FC函数)
  5. 死锁预防之银行家算法
  6. Avatarify 爆火不到 7 天下架,抖音、快手接棒 “蚂蚁牙黑”刷屏特效制作
  7. 《最好的告别》:如何优雅地走向生命终点
  8. Android Camera2 教程 · 第三章 · 预览
  9. outlook邮件撤回你了解吗?邮件撤回功能讲解
  10. 马踏棋盘问题的程序c语言,C语言马踏棋盘