【问题标题】:Keep track of links clicked via Javascript cookies跟踪通过 Javascript cookie 点击的链接
【发布时间】:2019-03-14 04:02:52
【问题描述】:

我的网站上有三个页面。

  • 当点击第一页上的按钮时,它会将用户引导至第二页。
  • 在第二页时,用户可以选择是否选择 将“插件”添加到他们的订单中或跳过它。
  • 无论他们添加还是跳过“插件”,他们都会转到另一个提供相同内容但“插件”不同的页面

通过这两个页面,我想跟踪用户是点击了添加还是跳过了插件,以了解最终发送给他们的付款链接。在第一页上,如果单击“添加”插件按钮,我将创建一个 JavaScript cookie,如下所示:

onclick="createCookie("addon1", "yes", 0)"

在第二页我做同样的事情,但为插件二创建一个 cookie:

onclick="createCookie("addon2", "yes", 0)"

使用 JavaScript

function createCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
 }

如果我已经创建了这两个 cookie,我如何在三页循环结束时处理它们以了解存在哪些 cookie 以及重定向到哪个支付链接?

在创建 cookie 的第二页上,我还需要以某种方式阅读并了解它是否存在。这让我很困惑。我是否需要额外的页面来处理这些是否存在?

【问题讨论】:

    标签: javascript html cookies


    【解决方案1】:

    如果第二个提示将您重定向,您将需要另一个页面。

    要读取 cookie,您可以使用 Zeus.js 的内置 zeus.getCookie() 函数。
    zeus.getCookie() 的工作方式如下:

    • 所有 Cookie 都被压缩成一个字符串,document.cookie
    • zeus.getCookie() 从字符串中挑选出想要的键
    • 返回一个字符串。

    例如,如果您设置了一个 cookie,document.cookie = "like=trains",您可以使用 zeus.getCookie("like") 返回值,trains(作为字符串)。


    要使用 Zeus.js,只需输入

    <script src="https://rawgithub.com/thetakeaway/zeus.js/master/zeus.js"></script>

    <head></head>.

    干杯!

    【讨论】:

    • 那么,如果存在addon2 cookie 并且值为yes if (zeus.getCookie("addon2") == "yes"),为什么这不起作用?
    • 没有错误只是没有任何反应,这是我在createCookie 方法中为您提供的HTML 链接createCookie 我创建了addon2 cookie,然后使用上面的代码查看addon2 cookie 是否存在。对吗?
    • 啊。有引号错误。试试<a href="#" onclick="createCookie('addon2', 'yes', 0)">@Luke14
    • 没问题!如果您还想与 cookie 或数组有关的任何其他事情,请告诉我,因为我非常乐意将它们包含在 Zeus.js 中! @Luke14 ;)
    【解决方案2】:

    如果你想要 cookie 的值,你可以通过 document.cookie 分解 ; 来拆分站点的 cookie,并通过 = 分解其中的部分以获得一组 cookie:

    var cookies = document.cookie.split(';'); 
    var cookieObject = {}; 
    for(var i=0;i<cookies.length;i++){
        var c = cookies[i].split('=')
        cookieObject[c[0]]=c[1];
    }
    

    您可以在真正想查看是否已设置 cookie 之前运行此程序,并检查 cookieObject 是否包含 addon1addon2

    如果它只是存在如果你想要的cookie,你可以简单地为document.cookie做一个搜索功能,比如:

    function doesCookieExist(cookie) {
        return document.cookie.search(cookie) >= 0;
    }
    

    这将返回真或假。您可以通过结合上面的两个功能使其更加健壮。转换为数组,然后搜索数组。

    【讨论】:

    • 按下最后一个添加按钮后,我正在寻找名为“addon2”的 cookie 的存在,但即使我从链接的 onclick 中调用它,它也不起作用。 var myCookie = getCookie("addon2"); if (myCookie == null) { window.location.replace("http://stackoverflow.com"); } else { window.location.replace("http://google.com"); }
    • so.. getCookie 是做什么的?
    • 你能告诉我你的getCookie()函数吗?还是 @Jorg 的?
    • 它什么都不做,我怎么能做一个简单的搜索来看看它是否存在我不关心这个值,因为它只有在用户点击按钮时才会存在
    猜你喜欢
    • 2012-03-12
    • 2017-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多