Cookie 读写类

/**
Cookie 读写类
    读:Cookie.get(name)
    写:Cookie.set(name, value, domain, ttl/*是否持久* /)
    删除: Cookie.clear(name)
    绑定Cookie变化事件 Cookie.change(function(){})
 */
var Cookie = function () {
    var prevCookie = null;
    var _user = {};

    jQuery(function(){
        window.setInterval(function () {
            if (!prevCookie || prevCookie != document.cookie) {
                prevCookie = document.cookie;
                jQuery(Cookie).trigger(‘cookie_change‘, prevCookie);
            }
        }, 1000);
    });

    return {
        change: function(fn){
        jQuery(this).bind(‘cookie_change‘, fn);
        },
        clear: function (name , domain) {
            var date = new Date();
            date.setTime(date.getTime() - 24 * 60 * 60 * 1000*10);
            var cookie = name + "="+Cookie.get(‘show_div‘)+"; expires=" + date.toGMTString() + "; path=/;domain=."+domain;
            document.cookie = cookie;
        },
        set: function (name, value, domain, ttl) {
            var value = value ? encodeURIComponent(typeof(value) == ‘string‘ ? value : JSON.stringify(value)) : "";
            var expires = "";
            if (value === "") {
                ttl = -1;
            }
            if (typeof(ttl) != "undefined") {
                var date = new Date();
                date.setTime(date.getTime() + (ttl * 24 * 60 * 60 * 1000));
                expires = "; expires=" + date.toGMTString();
            }
            try {
                if (jQuery.browser.msie && value !== "") {
                    var extra = 56 + (domain||‘‘).length;
                    var cookieByteLen = 0;
                    if (document.cookie) {
                        var cookieArr = document.cookie.split(/;\s*/);
                        cookieByteLen = cookieArr.length * extra + document.cookie.length;
                    }
                    var _302e = Cookie.get(name, false);
                    var _302f = _302e ? _302e.length : 0;
                    if ((cookieByteLen + value.length - _302f) > 4096) {
                        throw ("exceeds 4096 byte limit for cookie");
                    }
                }
                document.cookie = name + "=" + value + expires + "; path=/;" + (domain ? (" domain=." + domain) : "");
                return true;
            } catch(e) {
                return false;
            }
        },
        get: function (name, parse) {
            var cookieArr = document.cookie.split(/;\s*/);
            for (var i = 0; i < cookieArr.length; ++i) {
                var bits = cookieArr[i].split("=", 2);
                if (bits[0] == name) {
                    if (parse) {
                        try {
                            return eval("(" + decodeURIComponent(bits[1]) + ")");
                        } catch(e) {}
                    } else {
                        return decodeURIComponent(bits[1]);
                    }
                }
            }
            return null;
        }
    };
} ();
时间: 2024-11-06 03:18:59

Cookie 读写类的相关文章

c#/ASP.NET操作cookie(读写)代码示例

Cookie是存在硬盘上,IE存cookie的地方和Firefox存cookie的地方不一样.不同的操作系统也可能存cookie的地方不一样. 不同的浏览器会在各自的独立空间存放Cookie, 互不干涉以我的windows7, IE8为例,  cookie存在这: C:\Users\xiaoj\AppData\Local\Microsoft\Windows\Temporary Internet Files 注意: 缓存文件和cookie文件,是存在一起的, 都在这个目录下. 你也可以这样找, 打

c# dbf文件读写类

public class DbfReader     { private string _path; private OleDbConnection _connection; public DbfReader(string dbfPath)         { _path = dbfPath; CheckFile(); } public OleDbDataReader GetReader() { try { _connection.Open(); OleDbCommand command = n

Cookie工具类

1 import javax.servlet.http.Cookie; 2 import javax.servlet.http.HttpServletRequest; 3 import javax.servlet.http.HttpServletResponse; 4 import java.io.UnsupportedEncodingException; 5 import java.net.URLDecoder; 6 import java.net.URLEncoder; 7 8 /** 9

利用Spring.Net技术打造可切换的分布式缓存读写类

利用Spring.Net技术打造可切换的Memcached分布式缓存读写类 Memcached是一个高性能的分布式内存对象缓存系统,因为工作在内存,读写速率比数据库高的不是一般的多,和Radis一样具有高效的读写和分布式的优势,上一篇博文<Memcached在Windows下的配置和使用>已经对介绍过它在windows上的配置和使用. 新建ICacheWriter类--CacheWriter的接口,以达到通过配置文件可以切换缓存读写方式,例如,缓存读写也可以通过httpruntime.cach

Cookie工具类 - CookieUtil.java

Cookie工具类,提供Cookie的创建.获取.删除方法. 源码如下:(点击下载 -CookieUtil.java ) import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Cookie工具类 * */ public class CookieUtil { private CookieU

influxDB 0.9 C# 读写类

目前influxdb官网推荐的C#读写类是针对0.8版本的,截至本文写作之前,尚未发现有针对0.9的读写类. 我使用influxdb的是用于保存服务器的运行数据,程序需要以windows service的形式运行. influxdb提供了基于http的接口.一开始我使用的是httpClient来作为http客户端,但是发现程序以windows serive的形式运行的时候,居然无法发起http请求!而当windows service附在其它进程上,或者以window form形式运行时,却是正常

重新想象 Windows 8.1 Store Apps (90) - 通信的新特性: 通过 HttpBaseProtocolFilter 实现 http 请求的缓存控制,以及 cookie 读写; 自定义 HttpFilter; 其他

[源码下载] 作者:webabcd 介绍重新想象 Windows 8.1 Store Apps 之通信的新特性 通过 HttpBaseProtocolFilter 控制缓存逻辑,以及如何通过 HttpBaseProtocolFilter 管理 cookie 自定义 HttpFilter 其他 示例HTTP 服务端WebServer/HttpDemo.aspx.cs /* * 用于响应 http 请求 */ using System; using System.IO; using System.T

【.NET】Cookie操作类

using System; using System.Web; using System.Data; using System.Collections; using System.Collections.Generic; using System.Collections.Specialized; using System.Text; namespace Tool { /// <summary> /// Cookie操作类 /// </summary> public static c

Android游戏之文件读写类和绘图类设计

Android游戏之文件读写类和绘图类设计 1.基础知识: A. FileInputStream http://developer.android.com/reference/java/io/FileInputStream.htmlB. FileOutputStreamhttp://developer.android.com/reference/java/io/FileOutputStream.htmlC. Environment.getExternalStorageDirectory()htt