使用javascript弹出窗口,访问次数和采样率不起作用

时间:2017-07-25 11:03:18

标签: javascript cookies

我正在尝试制作一个只显示的弹出窗口: 第三次访问后,只有20%的时间。

我现在有这个,而且我对Javascript并不是很擅长,需要一些帮助来弄清楚我做错了什么。任何帮助将不胜感激

visits = getCookie('nVisits');
if (!visits) {
  visits = 1
}
if (visits == 3) {
  deleteCookie('nVisits')
  if (rand(0, 100) <= 20) {
    window.open("http://mypopup.html", "_blank", "toolbar=yes,scrollbars=yes,resizable=yes,top=500,left=500,width=400,height=400");
  } else {
    if (visits < 3) {
      ++visits;
      cookieData = visits;
      setCookie('nVisits', cookieData, expDate)
    }
  }
}

在页面的头部,我设置了cookie:

    expDate = new Date;
// in the following line, 180 means 180 days. 
expDate.setTime(expDate.getTime() + 180 * 24 * 60 * 60 * 1000); expDate.toGMTString();  

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

document.cookie= name + "=" + escape(value) +
((expires) ? "; expires=" + expires.toGMTString() : "") +
((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));
}


function deleteCookie(name, path, domain){

if (getCookie(name)){
document.cookie = name + "=" + 
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
"; expires=Thu, 01-Jan-70 00:00:01 GMT";}
}

---- --- UPDATE
我最初有这个 - 这是有效的 - 它只是让随机的20%工作......

<Script>
visits = getCookie('nVisits');
if (!visits){visits = 1};
if (visits == 3 ){deleteCookie('nVisits')
window.open("https://popup.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)
}
</Script>

1 个答案:

答案 0 :(得分:0)

因为我找不到你的函数rand的定义,所以我完全重写了剪辑。

const visitsCookieName = 'nVisits';
let visits = getCookie(visitsCookieName) || 0;
if (visits === 3) {
    deleteCookie(visitsCookieName)
    if (Math.floor(Math.random() * 5)) return;

    window.open("http://mypopup.html", "_blank", "toolbar=yes,scrollbars=yes,resizable=yes,top=500,left=500,width=400,height=400");
    return;
}

setCookie(visitsCookieName, ++visits, expDate);

说明

我在这里使用的随机逻辑非常简单。首先,我将随机浮点数乘以5,返回 0 ~4.99 之间的浮点数。在那之后我们需要它的地板价值。所以它介于 0 4 之间。因为0 == false只占所有尝试次数的20%。

剪辑中的另一个问题是第10行(if (visits < 3) {)。这将永远不会成立,因为在上面的陈述中你检查if (visits == 3) {(第5行)是否因为你没有改变visits的价值而它不能是其他任何东西而是确切的<强> 3