2014-10-04 1 views
0

다른 웹 사이트에 통합 된 js가 있습니다. 사용자가 사이트에 들어 오면 스크립트에서 함수가 호출되고 요소가 나타납니다. 엘리먼트를 팝업하는 js 함수에서 특정 백분율 (예 : 60 %)의 사용자 만 열 수 있습니까? Math.random() 함수를 사용하는 방법에 대해 생각했지만 사용법을 잘 모르겠습니다.특정 사용자에게만 팝업으로 요소를 여는 방법

EDIT : 생각해 보면, 자바 스크립트만으로는 달성 할 수 없으며 (데이터베이스를 통해) 사용자를 추적해야 할 수도 있습니다. 누군가 다른 방법을 알고 있다면, 나는 그것을 듣게되어 기쁠 것입니다.

답변

0

자바 스크립트로 쉽게 만들 수 있으며 매우 간단합니다! 첫 눈에

var pctg = 60; // Set percentage here 
var rndm = Math.ceil(Math.Random() * 100); 

if (rndm <= pctg) { 
    // Execute popup statement(s) 
} 

는,이 코드는 팝업이 발생하는 60% 기회를 제공합니다입니다를 한 페이지보기 다른 페이지 뷰에서 완전히 독립적이다. 20 명 이상의 후속 방문자가 팝업을 쉽게 얻을 수 있지만 그 반대도 가능합니다. 그러나 더 많은 방문자가 가까울수록 60%에 접근하게됩니다.

정확하길 원한다면 '특정 방문자가 팝업을 수신하는 비율 설정'이라고 말할 수 있습니다.

이 방법은 아무런 종류의 균형을 시도하지 않으며 순수한 페이지 뷰 수만을 사용합니다. 또한, 페이지 당 보기가 인 것을 잊지 마십시오.

당신이 특정 사용자가 방문 사이에 팝업을받을 것인지 여부를 기억하고 싶은 경우

, 쿠키 사용할 수 있습니다

document.cookie="bShowPopup=0"; 또는 document.cookie="bShowPopup=1";

이것은 또한 더 강력한 코드를 만들 수있는 가능성을 열어를, 팝업이 이미 한 번 표시되었을 때까지 페이지보기 당 팝업을 표시 할 수있는 기회를 생성합니다.

처음 지정된 쿠키 문자열을 읽고 쓸 수있는 기능 :

쿠키 사용에 대한 자세한 내용은 http://www.w3schools.com/js/js_cookies.asp을 확인하십시오.

다음으로 우리는이 작업을 수행 할 수 있습니다 : 모든 서버 측 프로그래밍 또는 사용자 추적하지 않고 가장 가까운 결과를 생성합니다

// See if the user already received the popup 
// The if statement will only evaluate to true if the popup is *not* explicitly disabled (that is, it is set to 1, or not set) 
if (getCookie('bShowPopup') !== '0') 
{ 
    var pctg = 60; // Set percentage here 
    var rndm = Math.ceil(Math.Random() * 100); 

    if (rndm <= pctg) { 
     // Execute popup statement(s) 
     //stmt123.... 

     // Set cookie bShowPopup to 0 (so the user won't receive popups ever again) 
     // NOTE: The cookie will expire after 30 days. 
     setCookie('bShowPopup', '0', 30); 
    } 
} 

또 다른 방법은, 특정 사용자가 한 번만 팝업을 표시할지 여부를 확인하는 것입니다, 결정 결과를 쿠키에 저장할 수 있습니다. 이전 코드에서 수정할 수있는 유일한 방법은 팝업이 표시되지 않은 경우에도 bShowPopup 쿠키를 0으로 설정하는 것입니다.

if (getCookie('bShowPopup') !== '0') 
{ 
    var pctg = 60; // Set percentage here 
    var rndm = Math.ceil(Math.Random() * 100); 

    if (rndm <= pctg) { 
     // Execute popup statement(s) 
     //stmt123.... 
    } 

    setCookie('bShowPopup', '0', 30); 
} 

는 또한 사용에 관한 http://www.w3schools.com/jsref/jsref_random.asp를 참조 인 Math.random의 valies을 보내주십시오().

+0

고마워,이 사실은 내가 어쨌든 추가해야하는 서버 측 코드의 비트와 결합하여 실제로 많은 도움이되었다. – user2078716

0

Math.Random()을 사용하는 것이 좋습니다. Math.Random()은 0과 1 사이의 숫자를 생성하므로 0과 10 사이의 임의의 숫자를 원하면 결과에 10을 곱한 다음 해당 숫자의 한도를 사용하여 소수 자릿수를 제거하고이를 라운드 숫자로 변환하십시오. 100-0, 당신의 팝업 함수의 시작 부분에 100을 곱 들어, 다음을 추가

var rand = Math.Random() * 100;

다음 있는지 확인 if 문에 팝업을 표시하는 코드를 포장 당신이 생성 된 난수는 60보다 작거나 같은 :

을 Heres
if(Math.ceil(rand) <= 60) { 
    ... 
} 
+0

Math.Random()이 특정 비율의 보증을 제공하는 방법은 무엇입니까? 'Math.Random()'이 항상 60보다 작은 값을 반환하면 모든 사용자 (100 %)가 팝업을 볼 수 있으며 특정 백분율에 대한 기회가 없다고 생각합니다. – ManirajSS

0

나는이 기능을 필요로 할 때 내가 무슨 짓을했는지의 예

다음 코드는 변경하면 유지하기 위해 좀 더 쉽게 될 것이다 옵션 수 또는 우연한 비율.

var contentId, random = Math.random(); 

if (random < 0.5) { 
    // option 1: chance 0.0–0.499... 
    contentId = 0; 
} else (random < 0.75) { 
    // option 2: chance 0.50—0.7499... 
    contentId = 1; 
} else { 
    // option 3: chance 0.75–0.99... 
    contentId = 2; 
} 

loadContent(contentId); 

편집코멘트 의견을 바탕으로.

기꺼이 도와 드리겠습니다. 이것은 PHP 페이지가 있다면 당신은 아약스가 필요하지 않습니다. 단순히 페이지의 상단에서 php/sql을 통해 카운트를 업데이트/반환하고 echo을 JS 함수에 입력하면됩니다. 숫자가 3으로 나눌 수 있는지 여부 만 확인하면됩니다. 그렇다면 귀하의 팝업 기능을 실행합니다. 이렇게하면 팝업이 활성화 된 시간을보고 할 수 있습니다.

+0

문제는 100 명의 사용자가 페이지를 입력하면 100 %의 무작위로 <0.5를 얻었고 100 %의 사용자에게 팝업을 표시했습니다 ... – user2078716

+1

데이터베이스에이 데이터를 저장하지 않으면 어떤 방문자가 셀 수 있는지에 따라 표시하도록 선택하면 원하는 것을 얻을 수 없습니다. Javascript는 마지막 "x"분의 사용자에 대해 이미이 페이지를 표시 한 경우 "알기"방법이 없습니다. 이것은 아약스와 PHP를 통해 이루어 졌다면 당신은 통계가 저장되어 있으므로 간단한 정확한 계산을 할 수 있습니다. – Vector

+0

이것이 정확히 내가 찾던 해답이라고 생각합니다. 이것이 자바 스크립트만으로 가능한지 나는 확신 할 수 없었습니다. 이제는 이것을 성취하기 위해 데이터베이스를 사용해야 만합니다. 감사! – user2078716

관련 문제