【问题标题】:Delete cookie when navigating away from specific page of a website离开网站的特定页面时删除 cookie
【发布时间】:2017-04-07 05:39:16
【问题描述】:

我正在开发一个电子商店 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 进行更新)。

再次感谢!!

【问题讨论】:

    标签: javascript php cookies


    【解决方案1】:

    没关系...经过一百万次试验和错误,我成功了。我决定在单击任何菜单项时绑定 cookie 删除功能。毕竟它是如此简单:(。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-14
      • 1970-01-01
      • 2021-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多