首页 > 解决方案 > 在使用 JS Cookie 浏览 x 页后显示模式?

问题描述

我正在尝试显示在我的网站上查看的 Bootstrap modal avec 3 页面,并找到一个实际的解决方案使用 JS-Cookie 插件找到这个问题的实际解决方案。

我试过这段代码,但它不工作:

$(document).ready(function () {
    // create cookie
    var visited = Cookies('visited'); // visited = 0
    if (visited >= 3) {
        // open fancybox after 3 secs on 4th visit or further on the same day
        $('#my_modal').modal('show');
    } else {
        visited++; // increase counter of visits
        // set new cookie value to match visits
        Cookies('visited', visited, {
            expires: 1 // expires after one day
        });
        return false;
    }
}); // ready

上面的代码应该做什么:在 4 页重新加载后提示模式,就像这里
什么不起作用:我重新加载页面但模式没有出现

这是我的 cookie 状态(在 chrome 上): 此链接上的图像

这是一个代码示例,实际上可用于在网站首次访问时显示模式:

$(document).ready(function() {
  if (Cookies('pop_welcome') == null) {
         $('#my_modal').modal('show');
     Cookies('pop_welcome', '31', { expires: 31 });
  }
 });

** - 解决方案 - **

您可以在@greedchikara 代码片段中找到解决方案

编码 :

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=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name,"",-1);
}

var visited = readCookie('tester') || 1;

if (visited > 2) {
  $('#my_modal').modal('show');
} else {
  visited++;
  createCookie('tester', visited, 1);
}

你能帮我么 ?谢谢

这是 JS cookie 插件的代码。

标签: javascriptjquerycookiesjs-cookie

解决方案


您可以使用这三个简单的函数来执行 cookie 任务,无需第三方库。

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=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name,"",-1);
}


推荐阅读