如何创建和存储 Cookie:
此示例中的 cookie 将存储访问者的姓名。访问者第一次到达该网页时,会要求他或她填写她/他的姓名。然后将该名称存储在 cookie 中。下次访问者到达同一页面时,他或她将收到欢迎消息。
首先,我们创建一个函数,将访问者的姓名存储在 cookie 变量中:
function setCookie(c_name,value,exdays)
{
var exdate=new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value=escape(value) + ((exdays==null) ? "" : ";
expires="+exdate.toUTCString());
document.cookie=c_name + "=" + c_value;
}
上面函数的参数包含cookie的名称、cookie的值以及cookie过期的天数。
在上面的函数中,我们首先将天数转换为有效日期,然后加上 cookie 到期前的天数。之后,我们将 cookie 名称、cookie 值和过期日期存储在 document.cookie 对象中。
获取 Cookie 值
然后,我们创建另一个返回指定 cookie 值的函数:
function getCookie(c_name)
{
var c_value = document.cookie;
var c_start = c_value.indexOf(" " + c_name + "=");
if (c_start == -1)
{
c_start = c_value.indexOf(c_name + "=");
}
if (c_start == -1)
{
c_value = null;
}
else
{
c_start = c_value.indexOf("=", c_start) + 1;
var c_end = c_value.indexOf(";", c_start);
if (c_end == -1)
{
c_end = c_value.length;
}
c_value = unescape(c_value.substring(c_start,c_end));
}
return c_value;
}
上面的代码使用 indexOf() 方法在文档的 cookie 字符串中搜索 cookie 名称。
第一个 indexOf() 方法将返回找到 cookie 的位置。添加了 " " + 和 +"=",以便该方法找不到名称或包含该名称的值。
如果该方法返回 -1,则 cookie 可能仍然存在于 cookie 字符串的最开头。为了消除这种情况,添加了另一个搜索,这次没有“”+。
检查 Cookie 值
最后,我们创建了一个函数,如果设置了 cookie,则显示欢迎消息,如果未设置 cookie,它将显示一个提示框,询问用户的姓名,并将用户名 cookie 存储 365 天,通过调用 setCookie 函数:
函数 checkCookie()
{
var username=get
Cookie("username");
if (username!=null && username!="")
{
alert("Welcome again " + username);
}
else
{
username=prompt("Please enter your name:","");
if (username!=null && username!="")
{
setCookie("username",username,365);
}
}
}
欲了解更多信息,请参阅:JavaScript Cookies