JavaScript Cookie 设置、读取与删除完整实例及兼容性说明

作者:代码拾荒

时间:2026-10-25

浏览:255

本文提供 JavaScript 中 Cookie 的设置、读取和删除的完整示例代码,涵盖基础操作与高级参数配置。同时详细解析 Cookie Version 0 与 Version 1 的格式差异,针对特殊字符限制及浏览器兼容性问题给出实用建议,帮助开发者避免常见错误。

文章目录

JavaScript Cookie 基础操作示例

本文整理并推荐了几篇关于 JavaScript Cookie 操作的优质文章,重点补充了路径设置等常被忽略的细节,供读者参考选用。


以下为第一个示例代码块:

 
<script>
function SetCookie(name,value)//两个参数,一个是cookie的名子,一个是值
{ 
var Days = 30; //此 cookie 将被保存 30 天
var exp = new Date(); //new Date("December 31, 9998");
exp.setTime(exp.getTime() + Days*24*60*60*1000);
document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
} 
function getCookie(name)//取cookies函数
{ 
var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
if(arr != null) return unescape(arr[2]); return null;
} 
function delCookie(name)//删除cookie
{ 
var exp = new Date();
exp.setTime(exp.getTime() - 1);
var cval=getCookie(name);
if(cval!=null) document.cookie= name + "="+cval+";expires="+exp.toGMTString();
} 
SetCookie ("xiaoqi", "3")
alert(getCookie('xiaoqi'));
</script>



高级 Cookie 读写与删除函数

接下来是一个更实用的 JavaScript 读写 Cookie 函数示例:


代码如下:

 
function GetCookieVal(offset)
//获得Cookie解码后的值
{ 
var endstr = documents.cookie.indexOf (";", offset);
if (endstr == -1)
endstr = documents.cookie.length;
return unescape(documents.cookie.substring(offset, endstr));
} 
function SetCookie(name, value)
//设定Cookie值
{ 
var expdate = new Date();
var argv = SetCookie.arguments;
var argc = SetCookie.arguments.length;
var expires = (argc > 2) ? argv[2] : null;
var path = (argc > 3) ? argv[3] : null;
var domain = (argc > 4) ? argv[4] : null;
var secure = (argc > 5) ? argv[5] : false;
if(expires!=null) expdate.setTime(expdate.getTime() + ( expires * 1000 ));
documents.cookie = name + "=" + escape (value) +((expires == null) ? "" : ("; expires="+ expdate.toGMTString()))
+((path == null) ? "" : ("; path=" + path)) +((domain == null) ? "" : ("; domain=" + domain))
+((secure == true) ? "; secure" : "");
} 
function DelCookie(name)
//删除Cookie
{ 
var exp = new Date();
exp.setTime (exp.getTime() - 1);
var cval = GetCookie (name);
documents.cookie = name + "=" + cval + "; expires="+ exp.toGMTString();
} 
function GetCookie(name)
//获得Cookie的原始值
{ 
var arg = name + "=";
var alen = arg.length;
var clen = documents.cookie.length;
var i = 0;
while (i < clen)
{ 
var j = i + alen;
if (documents.cookie.substring(i, j) == arg)
return GetCookieVal (j);
i = documents.cookie.indexOf(" ", i) + 1;
if (i == 0) break;
} 
return null;
} 



Cookie 控制的弹窗与提示逻辑

以下是第三个示例代码:

 
<SCRIPT language="javascript">
<!-- 
function openpopup(){
url="popup.htm"
window.open("gonggao.htm","gonggao","width=260,height=212,left=200,top=0")
} 
function get_cookie(Name) {
var search = Name + "="
var returnvalue = "";
if (documents.cookie.length > 0) {
offset = documents.cookie.indexOf(search)
if (offset != -1) {
offset += search.length
end = documents.cookie.indexOf(";", offset);
if (end == -1)
end = documents.cookie.length;
returnvalue=unescape(documents.cookie.substring(offset, end))
} 
} 
return returnvalue;
} 
function helpor_net(){
if (get_cookie('popped')==''){
openpopup()
documents.cookie="popped=yes"
} 
} 
helpor_net()
//--> 
</SCRIPT>



该逻辑实现点击确认后,只要不清除 Cookie,后续访问不再提示;若未确认则每次访问均会弹出提示。建议将此脚本放入独立 JS 文件中全站引用。


Cookie 格式验证与用户交互示例

第四个示例代码如下:

 
<SCRIPT LANGUAGE="JavaScript">
<!-- 
var the_cookie = document.cookie;
var broken_cookie = the_cookie.split(":");
var the_visiteraccepted = unescape(broken_cookie[1]);
// 
if (the_visiteraccepted=="undefined"){
var tmp=confirm('中国人何时何地。');
if(tmp==false){
window.close();
}else{
var the_visiteraccepted = 1;
var the_cookie = "ILoveChina=visiteraccepted:" + escape(the_visiteraccepted);
document.cookie = the_cookie;
} 
} 
//--> 
</SCRIPT>



Cookie 兼容性与字符限制规范

关于 Cookie 的兼容性问题


Cookie 格式存在两个不同版本:Version 0 由 Netscape 最初制定,被几乎所有浏览器支持;Version 1 则依据 RFC 2109 文档制定。为确保兼容性,相关操作通常针对旧版本 Cookie 进行,新版本规范目前尚未被 javax.servlet.http.Cookie 包完全支持。


2. Cookie的内容


不同版本的 Cookie 对内容字符限制不同。在 Version 0 中,空格、方括号、圆括号、等于号(=)、逗号、双引号、斜杠、问号、@符号、冒号、分号等特殊字符不能作为 Cookie 内容,这也是示例中使用 "Test_Content" 的原因。


尽管 Version 1 放宽了字符限制,但考虑到新规范尚未被所有浏览器支持,为保险起见,建议在 Cookie 内容中尽量避免使用上述特殊字符。


实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章