在离开网站的特定页面时删除cookie



我正在开发一个电子商店php网站。在我的购物车模板页面中,我定义了一个javascript cookie,因为我想存储用户在此特定页面上所做的特定选择。代码是

jQuery(document).ready(function($) {
$("input[name="license-selector"]").click(function(){ // when license-selector radio button is being clicked
var thisElem = $(this);                             // value is being written to variable value
var value = thisElem.val();
//localStorage:
sessionStorage.setItem("option", value);            // value stored in localstorage
//Cookies:
document.cookie="option="+value;                    // value stored in cookie
});
//localStorage:
var itemValue = sessionStorage.getItem("option");       // value is being loaded into variable itemValue

//Cookies:
var n = document.cookie;
if (n.indexOf("option=") !== -1) {
var cookieValue = n.substring(n.indexOf("option=")+7, n.indexOf(";"))   // value is being loaded into variable cookieValue
if (cookieValue == "su") {single_user()};
if (cookieValue == "mu") {multi_user()};
}
});

因此,Cookie 获取正在单击的单选按钮的值。目前为止,一切都好。该脚本是从仅应用于此购物车页面的外部脚本文件调用的。

现在,我尝试做的是删除此cookie,只要用户离开此购物车页面(不是从网站,而是每当用户决定访问例如产品,主页等我正在工作的同一网站)。我想删除 cookie,并让访问者在重新访问购物车页面时再次做出选择。综上所述:...他们在购物车页面,做出他们的选择,cookie被存储...然后,他们访问例如商店页面(或网站的任何其他页面),cookie被删除,当他们重新访问购物车页面(同一会话)时,他们必须再次进行相同的选择(从而再次设置cookie)。

为了删除cookie,我暂时在网站的标题中插入了这个脚本(在关闭head标签之前)。

// Delete cookie
// store url on load
var currentPage = window.location.href;
var cookiePage = 'http://localhost/my-site/cart/';
// listen for changes
setInterval(function()
{
console.log(currentPage);
if (currentPage != cookiePage)
{
document.cookie = "option=; expires=Thu, 01 Jan 1970 00:00:00 GMT";
var cookieValue = 0;
}
}, 500);

此脚本正在尝试检查当前 URL,并查看它是否与购物车页面的 URL 匹配。此检查每半秒执行一次。如果用户不在购物车页面中,脚本理论上应该删除cookie...

正如你猜对的...它不起作用...任何使其工作的帮助将不胜感激。目标是在访问者离开购物车页面时删除cookie。顺便说一句,我知道有 onbeforeunload 的解决方案,并调用一个函数来清空 cookie,但我不想要这个解决方案。每当我单击购物车页面中的"更新购物车"按钮时,使用 onbeforeunload 都会删除 cookie,但我不希望这样做(当我单击"更新购物车"时,购物车页面会通过 ajax 更新

)。再次感谢!!

没关系...经过一百万次尝试和错误,我做到了。我决定在单击任何菜单项时绑定cookie删除功能。毕竟:(就是这么简单。

最新更新