zoukankan      html  css  js  c++  java
  • 原生JavaScript常用本地浏览器存储方法三(UserData IE Only)

    UserData的应用范围

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

    UserData存储在哪儿?

    首先设置文件夹全部显示,在XP下,一般位于C:Documents and Settings用户名UserData,有些时候会在C:Documents and Settings用户名Application DataMicrosoftInternet ExplorerUserData。
    在Vista下,位于C:Users用户名AppDataRoamingMicrosoftInternet ExplorerUserData。

    UserData容量

    安全区域 页大小限制 域大小限制
    Intranet 512KB 10MB
    本机、可信任区域及Internet 128KB 1MB
    受限制区域 64KB 640KB

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

    由名/值对是作为XML节点的属性存储在userData的XML文档中,因此Internet Explorer可以自动将某些特殊字符转义为XML中的对应字符。例如,双引号(”)会被替换为",而连字符(&)会被替换 为&。由于这些自动转义的字符会增加实际存储的数据大小,因此开发人员必须确保有足够的空间来存储转义后的数据。

    UserData如何使用?

    UserData其实就是借助一个方法给xml文件添加修改数据

    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创建

    var oUserData = document.body;
    oUserData.addBehavior("#default#userdata");

    UserData数据设置保存

    oUserData.setAttribute("name","dtdxrk");
    oUserData.save("cs");

    执行后,UserData文件夹中会生成一个cs[1].xml文件,其中的内容是:
    <ROOTSTUB name="dtdxrk"/>

    UserData数据读取

    oUserData.load("cs");
    oUserData.getAttribute("name");

    UserData删除属性

    oUserData.removeAttribute("name")

    UserData设置过期时间

    var d = new Date();
    d.setDate(d.getDate()+365);
    oUserData.expires = d.toUTCString();

    如果不设置时间会被默认为永久保存

    UserData作用域

    不同域、甚至同一域下的不同子域之间都不能共享数据。此 外,同一主机不同端口上的应用程序之间也无法共享数据。我们只能在同域同目录下的不同页面之间共享数据。例如,http://abc.com/Storage/Checkout.html可以访问http://abc.com/Storage/UserData.html,以及任何/Storage/目录下网页所存储的数据。如果试图从其他页面访问,仅会返回一个null。这些默认的限制是无法 改变的,并且几乎与cookie的默认规则恰恰相反。这也使得userData成为了Internet Explore中少数几个较为安全的功能之一。

    UserData封装的方法

     1 var oUserData = {
     2   oStart : null,
     3   init : function(){
     4     if(oUserData.oStart == null){
     5       oUserData.oStart = document.body;
     6       oUserData.oStart.addBehavior("#default#userdata");
     7     }
     8   },
     9   /* 
    10   XmlName xml文件名称
    11   attr 属性
    12   data 数据
    13   expiresDays 数据保存天数 不填为永久
    14   */
    15   save : function(XmlName, attr, data, expiresDays){
    16     try{
    17       oUserData.init();
    18       var oStart = oUserData.oStart;
    19       if(attr && data) oStart.setAttribute(attr, data);
    20       if(expiresDays){
    21         var d = new Date();
    22         d.setDate(d.getDate()+expiresDays); 
    23         oUserData.expires = d.toUTCString();
    24       }
    25       oStart.save(XmlName);
    26     }catch(e){
    27       alert("保存UserData失败!");
    28     }
    29   },
    30   load : function(XmlName, attr){
    31     try{
    32       oUserData.init();
    33       var oStart = oUserData.oStart;
    34       if(oStart.load(XmlName)!==null && attr){
    35         oStart.load(XmlName);
    36         return oStart.getAttribute(attr);
    37       }
    38     }catch(e){
    39       alert("提取UserData失败!");
    40     }
    41   },
    42   del : function(XmlName, attr){
    43     try{
    44       oUserData.init();
    45       var oStart = oUserData.oStart;
    46       if(oStart.load(XmlName)!==null && attr){
    47         oStart.load(XmlName);
    48         oStart.removeAttribute(attr);
    49         oStart.save(XmlName);
    50       }
    51     }catch(e){
    52       alert("删除UserData失败!");
    53     }
    54   }
    55 } 
    56 
    57 oUserData.save("lx","name","dtdxrk");
    58 oUserData.del("lx","name");
    59 oUserData.save("lx","name2","dtdxrk2");
    60 alert(oUserData.load("lx","name"));
    61 alert(oUserData.load("lx","name2"));
  • 相关阅读:
    kendoGrid edit功能
    kendoGrid Event事件
    你不得不看的81条JavaScript编码小技巧,吐血整理,建议收藏
    H265编码视频流媒体播放器EasyPlayer.js支持9宫格视频同屏播放的写法
    EasyNTS 交叉编译海思系统下的可执行程序实现及测试过程
    EasyNTS在Go1.15版本下linux下无法编译的问题优化
    TSINGSEE青犀视频开发Python3行人分析功能运行一段时间后崩溃是什么原因?
    Mysql数据库导入excel和乱码问题
    聊聊5G:5G技术的落地能给视频娱乐、VR直播带来怎样的潜力?
    企业直播的核心点在哪里?未来将如何发展?
  • 原文地址:https://www.cnblogs.com/dtdxrk/p/3520398.html
Copyright © 2011-2022 走看看