Javascript 如何在6个月内,在3次页面访问之后,仅向20%的访问者显示一次弹出窗口?
我不太擅长JavaScript,但我试过了。在下面的代码中,我确实让弹出窗口仅在3次页面浏览后显示,并以20%的采样率显示,而且我有一个cookie将在6个月后过期,但我不知道如何添加(我猜是通过'if'语句)在6个月的时间段内仅显示一次弹出窗口。任何帮助都将不胜感激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)
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
每次都将匹配。->您必须进行访问
以某种方式取消匹配条件。要么增加它,要么随便什么。