我正在尝试制作一个只显示的弹出窗口: 第三次访问后,只有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>
答案 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 强>