Javascript 如何在6个月内,在3次页面访问之后,仅向20%的访问者显示一次弹出窗口?

Javascript 如何在6个月内,在3次页面访问之后,仅向20%的访问者显示一次弹出窗口?,javascript,cookies,Javascript,Cookies,我不太擅长JavaScript,但我试过了。在下面的代码中,我确实让弹出窗口仅在3次页面浏览后显示,并以20%的采样率显示,而且我有一个cookie将在6个月后过期,但我不知道如何添加(我猜是通过'if'语句)在6个月的时间段内仅显示一次弹出窗口。任何帮助都将不胜感激 function setCookie(name, value, expires, path, domain, secure) { document.cookie = name + "=" + escape(value)

我不太擅长JavaScript,但我试过了。在下面的代码中,我确实让弹出窗口仅在3次页面浏览后显示,并以20%的采样率显示,而且我有一个cookie将在6个月后过期,但我不知道如何添加(我猜是通过'if'语句)在6个月的时间段内仅显示一次弹出窗口。任何帮助都将不胜感激

function setCookie(name, value, expires, path, domain, secure) {

    document.cookie = name + "=" + escape(value) +
        ((expires) ? "; expires=" + expires.toUTCString() : "") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");
}

function getCookie(name) {

    var dc = document.cookie;
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin === -1) {
        begin = dc.indexOf(prefix);
        if (begin !== 0) return null;
    } else {
        begin += 2;
    }
    var end = document.cookie.indexOf(";", begin);
    if (end === -1) {
        end = dc.length;
    }
    return unescape(dc.substring(begin + prefix.length, end));
}


visits = getCookie('nVisits');
if (!visits) {
    visits = 1
}
if (visits == 3)
    if ((Math.random() * (100 - 1) + 1) < 20) {
        window.open("https://www.mypopup.html", "_blank", "toolbar=yes,scrollbars=yes,resizable=yes,top=500,left=500,width=400,height=400");
    }
if (visits < 3) {
    ++visits;
    cookieData = visits;
    setCookie('nVisits', cookieData, expDate)
}


expDate = new Date;
// in the following line, 180 means 180 days. 
expDate.setTime(expDate.getTime() + 180 * 24 * 60 * 60 * 1000);
expDate.toUTCString();
函数setCookie(名称、值、过期、路径、域、安全){
document.cookie=名称+“=”+转义(值)+
((expires)?“expires=“+expires.ToutString():”)+
((路径)?“路径=”+path:)+
((域)?“域=”+域:“”)+
((安全)?“安全”:“);
}
函数getCookie(名称){
var dc=document.cookie;
变量前缀=名称+“=”;
var begin=dc.indexOf(“;”+前缀);
如果(开始==-1){
begin=dc.indexOf(前缀);
如果(begin!==0)返回null;
}否则{
开始+=2;
}
var end=document.cookie.indexOf(“;”,begin);
如果(结束==-1){
结束=直流长度;
}
返回unescape(dc.substring(begin+prefix.length,end));
}
访问量=获取cookie(“nVisits”);
如果(!访问){
访问次数=1
}
如果(访问次数==3)
如果((Math.random()*(100-1)+1)<20){
窗口打开(“https://www.mypopup.html“工具栏=是,滚动条=是,可调整大小=是,顶部=500,左侧=500,宽度=400,高度=400”);
}
if(访问次数<3次){
++访问;
cookieData=访问;
setCookie('nVisits',cookieData,expDate)
}
expDate=新日期;
//在下一行中,180表示180天。
expDate.setTime(expDate.getTime()+180*24*60*60*1000);
expDate.toutString();

我认为问题在于:

if (visits == 3)
    if ((Math.random() * (100 - 1) + 1) < 20) {
    window.open("https://www.mypopup.html", "_blank", "toolbar=yes,scrollbars=yes,resizable=yes,top=500,left=500,width=400,height=400");
}    
if (visits < 3) {
    ++visits;
    cookieData = visits;
    setCookie('nVisits', cookieData, expDate)
}
if(访问次数==3次)
如果((Math.random()*(100-1)+1)<20){
窗口打开(“https://www.mypopup.html“工具栏=是,滚动条=是,可调整大小=是,顶部=500,左侧=500,宽度=400,高度=400”);
}    
if(访问次数<3次){
++访问;
cookieData=访问;
setCookie('nVisits',cookieData,expDate)
}
您最多只能增加三次访问。但当它是三时,它永远是三

=>始终增加cookie(->删除if(访问次数<3))或在if(访问次数===3)中将计数器更改为4。或添加显示的标志。或者类似的东西



还有一个普遍的想法:代码没有解释目的,但要记住,一个用户可以使用更多的设备/浏览器、清理cookies、使用cookie拦截器和类似的工具。

我认为问题在于:

if (visits == 3)
    if ((Math.random() * (100 - 1) + 1) < 20) {
    window.open("https://www.mypopup.html", "_blank", "toolbar=yes,scrollbars=yes,resizable=yes,top=500,left=500,width=400,height=400");
}    
if (visits < 3) {
    ++visits;
    cookieData = visits;
    setCookie('nVisits', cookieData, expDate)
}
if(访问次数==3次)
如果((Math.random()*(100-1)+1)<20){
窗口打开(“https://www.mypopup.html“工具栏=是,滚动条=是,可调整大小=是,顶部=500,左侧=500,宽度=400,高度=400”);
}    
if(访问次数<3次){
++访问;
cookieData=访问;
setCookie('nVisits',cookieData,expDate)
}
您最多只能增加三次访问。但当它是三时,它永远是三

=>始终增加cookie(->删除if(访问次数<3))或在if(访问次数===3)中将计数器更改为4。或添加显示的标志。或者类似的东西



还有一个普遍的想法:代码没有解释目的,但要记住,一个用户可以使用更多的设备/浏览器、清理cookies、使用cookie拦截器和类似的工具。

对不起,我感到困惑(对我来说完全正常)。将访问次数从<3次更改为3次;到<4?那么,您最多可以增加3次访问。然后它永远不会改变。->条件
访问===3
每次都将匹配。->您必须进行
访问
以某种方式取消匹配条件。要么增加它,要么随便什么。对不起,我很困惑(对我来说完全正常)。将访问次数从<3次更改为3次;到<4?那么,您最多可以增加3次访问。然后它永远不会改变。->条件
访问===3
每次都将匹配。->您必须进行
访问
以某种方式取消匹配条件。要么增加它,要么随便什么。