如何在浏览器关闭时删除jquery中的cookie?

我使用jQuery创建了一个cookie。 我想在浏览器关闭时用jQuery删除cookie。 我该怎么做呢?

我写了以下脚本:

$(function () { if ($.cookie('toggle') == "toggle") { $('#toggleText').show(); $('#displayText').text("Less"); } else { $('#toggleText').hide(); $('#displayText').text("More"); } $('#displayText').click(function () { if ($(this).text() == "More") { $('#toggleText').show(); $(this).text("Less"); $.cookie('toggle', 'toggle'); } else { $('#toggleText').hide(); $(this).text("More"); $.cookie('toggle', 'nottoggle'); } }); }) 

当用户刷新浏览器时,也不应删除cookie。

谢谢。

你在谈论的是一个瞬态cookie – 当你设置一个没有过期日期的cookie时,cookie是暂时的(当浏览器关闭时它们会被删除)。 它们仅适用于当前的浏览器会话

如果您使用此实施 – > http://code.google.com/p/cookies/wiki/Documentation

他们提供了删除方法:

 $.cookies.del('myCookie'); //deletes a cookie, 'myCookie', with default options 

或者使用纯JavaScript删除cookie:

document.cookie = "myCookie=; expires=Thu, 01-Jan-70 00:00:01 GMT;";

有一个可以绑定的unload事件,允许您在浏览器关闭时删除cookie –

当用户离开页面时,卸载事件被发送到窗口元素。 这可能意味着很多事情之一。 用户可以单击链接离开页面,或在地址栏中键入新URL。 前进和后退按钮将触发事件。 关闭浏览器窗口将导致触发事件。 即使页面重新加载也会首先创建一个卸载事件。

示例:

 $(window).unload(function() { // delete your cookie here }); 

更新….

似乎使用会话cookie与jQuery插件并不是应该的简单…我认为使用插件来完成这么简单的任务是浪费带宽(我知道它只有几个KB – 但是可怜的移动用户)..这些是我用来获取/设置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; } function getCookie(c_name) { var i, x, y, ARRcookies = document.cookie.split(";"); for (i = 0; i < ARRcookies.length; i++) { x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("=")); y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1); x = x.replace(/^\s+|\s+$/g, ""); if (x == c_name) { return unescape(y); } } } 

使用这些方法非常简单....

 setCookie('myCookie','myvalues',5); // the 5 is the number of days in the future the cookies should be removed // leave this parameter out or set to null for transient cookie myvalues = getCookie('myCookie'); 

另一个更新......

使用jQuery插件并不困难,您只需要设置一些选项:

 var newOptions = { expiresAt: null }; $.cookies.setOptions(newOptions); or $.cookies.setOptions({expiresAt: null}); 

如果您希望在关闭浏览器时删除cookie,则应设置会话cookie ,该会话cookie在浏览器关闭时自动过期。 但是,如果要在关闭选项卡时删除cookie,而不是使用window.unloadwindow.unload事件,请编写一个函数来删除必要的cookie并附加到这些事件。

 function deleteCookie(name) { setCookie(name,"",-1); } function setCookie(name,value,days) { if (days) { var date = new Date(); date.setTime(date.getTime()+(days*24*60*60*1000)); var expires = "; expires="+date.toGMTString(); } else expires = ""; document.cookie = name+"="+value+expires+"; path=/"; } $(window).unload(function() { deleteCookie('Your cookie to delete name'); }); 

使用上面提到的简单的javascript代码来创建或删除cookie。 如果你想把它作为一个会话cookie(它将在浏览器关闭时到期)不要传递day参数。

喜欢

 setCookie('test','aa'); 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; } function getCookie(c_name) { var i,x,y,ARRcookies=document.cookie.split(";"); for (i=0;i