最新的Web开发教程
 

JavaScript Cookies


Cookies让你存储在网页中的用户信息。


什么是Cookies

Cookies是数据,存放在小文本文件,你的计算机上。

当Web服务器发送一个网页浏览器,连接被关闭,服务器忘记关于用户的一切。

Cookies被发明来解决“如何记住用户信息”的问题:

  • 当用户访问网页时,他的名字可被存储在一个cookie
  • 用户访问该页面时,已cookie “记住”他的名字。

Cookies是保存在类似名称 - 值对:

username = John Doe

当从服务器的浏览器请求网页时, cookies属于页被添加到请求。 这样,服务器获取所需的数据“记住”用户信息。


创建a Cookie使用JavaScript

JavaScript可以创建,读取和删除cookiesdocument.cookie属性。

使用JavaScript, a cookie可以这样创建:

document.cookie = "username=John Doe";

您还可以添加失效日期(UTC时间)。 默认情况下, the cookie在浏览器关闭时被删除:

document.cookie = "username=John Doe; expires=Thu, 18 Dec 2013 12:00:00 UTC";

随着路径参数,你可以告诉路径浏览器the cookie所属。 默认情况下, the cookie属于当前页面。

document.cookie = "username=John Doe; expires=Thu, 18 Dec 2013 12:00:00 UTC; path=/";

读取a Cookie使用JavaScript

使用JavaScript, cookies可以这样写:

var x = document.cookie;

document.cookie将返回所有cookies在一个字符串很像: cookie1=value; cookie2=value; cookie3=value; cookie1=value; cookie2=value; cookie3=value;


改变a Cookie使用JavaScript

使用JavaScript,你可以改变a cookie在创建同样的方式:

document.cookie = "username=John Smith; expires=Thu, 18 Dec 2013 12:00:00 UTC; path=/";

cookie将被覆盖。


删除a Cookie使用JavaScript

删除a cookie是非常简单的。 只需设置到期参数为传递日期:

document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 UTC";

请注意,您不必指定a cookie ,当你删除值a cookie


Cookie字符串

document.cookie属性看起来像一个正常的文本字符串。 但事实并非如此。

即使你写了一个整体cookie字符串document.cookie ,当你再读一遍,你只能看到名字-值对吧。

如果你设置一个新cookie ,年纪大cookies不会被覆盖。 新cookie将被添加到document.cookie ,所以如果你读document.cookie再次你会得到这样的:

cookie1 = value; cookie2 = value;

如果你想找到一个特定的值cookie ,你必须编写的JavaScript函数中搜索cookie的值cookie字符串。


JavaScript的Cookie

另外,在以下的例子中,我们将创建a cookie存储访问者的名字。

第一次一个访问者到达的网页,他将被要求填写自己的名字。 然后该名称存储在a cookie

下一次访问者到达同一个页面,他将得到一个值得欢迎的消息。

对于这个例子,我们将创建3个JavaScript函数:

  1. 一个函数来设置一个cookie
  2. 一个函数来获取一个cookie
  3. 该功能可以检查一个cookie

一个函数来设置a Cookie

首先,我们创建一个存储在访问者的名称的函数a cookie变量:

function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays*24*60*60*1000));
    var expires = "expires="+ d.toUTCString();
    document.cookie = cname + "=" + cvalue + "; " + expires;
}

例子解释:

以上的函数的参数是的名称cookie (cname)的值the cookie (cvalue)和天直到该cookie应到期(exdays)的数目。

函数设置a cookie通过相加所述cookienamethe cookie值和到期串。


一个函数来获取a Cookie

然后,我们创建一个返回指定的值的函数cookie

function getCookie(cname) {
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for(var i = 0; i <ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') {
            c = c.substring(1);
        }
        if (c.indexOf(name) == 0) {
            return c.substring(name.length,c.length);
        }
    }
    return "";
}

功能介绍:

the cookiename作为参数(CNAME)。

创建文本变量(名称)搜索(CNAME +“=”)。

拆分document.cookie上分号到一个数组称为ca (ca = document.cookie.split(';'))

循环通过CA array (i=0;i<ca.length;i++)并读出每个值c=ca[i])

如果the cookie发现(c.indexOf(name) == 0)返回值the cookie (c.substring(name.length,c.length)

如果the cookie没有找到,返回“”。


A功能检查a Cookie

最后,我们创建了功能checks ,如果a cookie设置。

如果the cookie设置它会显示一个问候。

如果the cookie没有设置,它会显示一个提示框,询问用户名,并存储用户名cookie为365天,通过调用setCookie函数:

function checkCookie() {
    var username=getCookie("username");
    if (username!="") {
        alert("Welcome again " + username);
    } else {
        username = prompt("Please enter your name:", "");
        if (username != "" && username != null) {
            setCookie("username", username, 365);
        }
    }
}

现在一起所有

function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays*24*60*60*1000));
    var expires = "expires="+d.toUTCString();
    document.cookie = cname + "=" + cvalue + "; " + expires;
}

function getCookie(cname) {
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for(var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') {
            c = c.substring(1);
        }
        if (c.indexOf(name) == 0) {
            return c.substring(name.length, c.length);
        }
    }
    return "";
}

function checkCookie() {
    var user = getCookie("username");
    if (user != "") {
        alert("Welcome again " + user);
    } else {
        user = prompt("Please enter your name:", "");
        if (user != "" && user != null) {
            setCookie("username", user, 365);
        }
    }
}
试一试»

上面的例子运行checkCookie()函数在页面加载时。