簡體   English   中英

使用javascript彈出式窗口,但訪問次數和采樣率不起作用

[英]pop-up using javascript with visits and sample rate not working

我正在嘗試制作一個僅顯示的彈出窗口:第三次訪問后,只有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";}
}

----更新---
我最初有這個-運作正常-只是隨機獲得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>

因為我找不到您的函數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之間。 之后,我們需要它的底值。 因此介於04之間。 因為0 == false所以僅命中了所有嘗試的20%。

您被截斷的另一個問題在第10行( if (visits < 3) { )。 這永遠是不正確的,因為在上面的語句中您檢查if if (visits == 3) { (第5行),並且因為您沒有更改visits的價值,所以只能是3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM