JavaScript Cookie 设置、读取与删除完整实例及兼容性说明
本文提供 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 内容中尽量避免使用上述特殊字符。
JavaScript入门书籍避坑:这些书不适合初学者
2026-11-05 16:31:15
JS使用Math.round实现保留两位小数的原理与代码
2026-11-05 15:35:55
JavaScript 原生 Date 对象怎么实现日期加减
2026-11-05 14:30:00
JavaScript函数定义的三种方式:声明、表达式与箭头函数
2026-11-05 13:50:55
JavaScript中escape、encodeURI和encodeURIComponent对空格的处理差异
2026-11-05 12:47:23
