zoukankan      html  css  js  c++  java
  • commonCookie.js

    /**
    * Created with JetBrains WebStorm.
    * NAME: commonCookie.js
    */
    (function(window,document){
    var
    commonCookie = {},
    singleClear = {},
    specialKey = 'common_cookie_special_key',

    changeSpecialKey = function(val){
    specialKey = val;
    clearUp(specialKey);
    },
    urlencode = function(str){
    str = (str + '').toString();
    return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g, '%27').replace(/(/g, '%28').replace(/)/g, '%29').replace(/*/g, '%2A').replace(/%20/g, '+');
    },
    urldecode = function(str){
    return decodeURIComponent((str + '').replace(/%(?![da-f]{2})/gi, function(){
    return '%25';
    }).replace(/+/g, '%20'));
    },
    setcookie = function(cookieName,cookieValue,seconds,path,domain,secure){
    var expires = new Date();
    expires.setTime(expires.getTime() + seconds);
    document.cookie = cookieName + '=' + urlencode(cookieValue) +
    (expires ? ';expires=' + expires.toGMTString() : '') +
    (path ? ';path=' + path : '') +
    (domain ? ';domain=' + domain : '') +
    (secure ? ';secure' : '');
    },

    getcookie = function(name){
    var cookieStart = document.cookie.indexOf(name);
    var cookieEnd = document.cookie.indexOf(";", cookieStart);
    return cookieStart == -1 ? '' : urldecode(document.cookie.substring(cookieStart + name.length + 1, (cookieEnd > cookieStart ? cookieEnd : document.cookie.length)));
    },

    obj2str = function(obj) {
    if(typeof obj == 'undefined') return "";
    var arr = [];
    if(typeof obj == "string") return """ + obj.replace(/(["\])/g,"\$1").replace(/( )/g,"\n").replace(/( )/g,"\r").replace(/( )/g,"\t") + """;
    if(typeof obj == "object") {
    if(!obj.sort) {
    for(var i in obj)
    arr.push(""" + i + "":" + arguments.callee(obj[i]));
    if(!!document.all && !/^ ?functions*toString()s*{ ?s*[native code] ?s*} ?s*$/.test(obj.toString)) {
    arr.push("toString:" + obj.toString.toString());
    }
    arr = "{" + arr.join() + "}"
    }else{
    for(var i = 0; i < obj.length; i++)
    arr.push(arguments.callee(obj[i]))
    arr = "[" + arr.join() + "]";
    }
    return arr;
    }
    if(typeof obj == "function") return "function(){}";
    return obj.toString().replace(/":/g,'":""');
    },

    get = function(name,realKey){
    if(!name) return undefined;
    if(typeof realKey == 'undefined') realKey = specialKey;
    else singleClearOne(realKey);
    var specialCookie = getcookie(realKey);
    if(specialCookie == '') return undefined;
    else{
    try {
    var cookieObj = eval('(' + specialCookie + ')');
    } catch (err) {
    return;
    }
    var result = cookieObj[name];
    if(typeof result == 'object' && typeof result.e != 'undefined'){
    var now = getTimeStamp();
    if (now > result.e) {
    set(name,undefined,realKey);
    return undefined;
    }
    }
    return result;
    }
    },

    getTimeStamp = function(){
    return Date.parse(new Date())/1000;
    },

    set = function(name,value,realKey){
    if(typeof realKey == 'undefined') realKey = specialKey;
    else singleClearOne(realKey);
    var specialCookie = getcookie(realKey),objStr,cookieObj;
    if (specialCookie == '') cookieObj = {};
    else {
    try {
    cookieObj = eval('(' + specialCookie + ')');
    } catch (err) {
    return;
    }
    }
    if(value == undefined) delete cookieObj[name];
    else cookieObj[name] = value;
    objStr = obj2str(cookieObj);
    if(objStr.length <= 3800)
    setcookie(realKey,objStr,315360000000,'/');
    },

    clearUp = function(specialKey){
    var
    specialCookie = getcookie(specialKey),
    now = getTimeStamp(),
    objStr,cookieObj;
    if(specialCookie == '') return ;
    else {
    try {
    cookieObj = eval('(' + specialCookie + ')');
    } catch (err) {
    return;
    }
    }
    var flag = 0;
    for(var key in cookieObj){
    var result = cookieObj[key];
    if(typeof result == 'object' && typeof result.e !== 'undefined'){
    if(now >= result.e){
    delete cookieObj[key];
    flag = 1;
    }
    }
    }
    if (flag == 1) {
    objStr = obj2str(cookieObj);
    if (objStr.length <= 3800)
    setcookie(specialKey, objStr, 315360000000, '/');
    }
    },

    singleClearOne = function(key){
    if(key && ((typeof singleClear[key] == 'undefined' ) || singleClear[key] == 0)){
    clearUp(key);
    singleClear[key] = 1;
    }
    };

    commonCookie.getTimeStamp = getTimeStamp;
    commonCookie.changeSpecialKey = changeSpecialKey;
    commonCookie.setcookie = setcookie;
    commonCookie.getcookie = getcookie;
    commonCookie.get = get;
    commonCookie.set = set;
    window.commonCookie = commonCookie;
    clearUp(specialKey);
    })(window,document);

    调用:

    var now = commonCookie.getTimeStamp();
    commonCookie.set("tip",{e:now + 3600 * 24 * 3});

    commonCookie.get("tip");

  • 相关阅读:
    3. 23 模拟面试
    3.15 模拟面试
    C++ 浅谈virtual
    3.6 模拟面试
    为s5pv210烧录镜像
    HISI VENC 实际输出帧率控制
    live555 交叉编译移植到海思开发板
    雄迈取流
    面试官吐槽:“软件测试员就是不行!”网友:我能把你面哭了!——软件测试笔试面试题目完全汇总
    “女人~,你在玩火”一个有磁性的声音说道——常用自动化测试工具
  • 原文地址:https://www.cnblogs.com/yzryc/p/6029251.html
Copyright © 2011-2022 走看看