사용자를 찾는 방법은 JavaScript를 사용하여 내 웹 사이트를 통해 3 번 클릭했습니다.

StackOverflow https://stackoverflow.com/questions/382382

  •  23-08-2019
  •  | 
  •  

문제

JavaScript에 동일한 도메인을 2 번 이상 클릭 한 사용자를 찾는 방법이 있습니까?

사용자가 사이트의 어느 곳에서나 3 번 클릭 한 후 창을 팝업해야합니다. 한 번의 클릭 후 어떻게하는지 알고 있습니다. document.referrer 또는 addEventListener, 그러나 나는 길을 잃었다.

모든 클릭 이벤트 (링크뿐만 아니라)를 캡처하고 계산할 무언가가 필요합니다.

도움이 되었습니까?

해결책

나는 이것을 시도했고 그것은 잘 작동했다 :

window.onload = function() {
    var clicked = readCookie('popunder');
    if(clicked == null) {
        clicked = 0;
    }

    var allLinks = document.getElementsByTagName("a");
    for(i=0;i<=allLinks.length;i++) {
        allLinks[i].addEventListener("click",countClicks,true);
    }

    function countClicks() {           
        if(clicked == 2) {
            popunder(); //something to do
        } else {
            clicked++;
            doCookie('popunder', clicked, 1);
            alert(clicked);
        }
    }

    function popunder() { alert('thats 3 clicks!'); }

    function doCookie(name,value,days) {
        if (days) {
            var date = new Date();
            date.setTime(date.getTime()+(days*24*60*60*1000));
            var expires = "; expires="+date.toGMTString();
        } else {
            var expires = "";
        }
        document.cookie = name+"="+value+expires+"; path=/";
    }

    function readCookie(name) {
        var readName = name + "=";
        var cSplit = document.cookie.split(';');
        for(var i=0;i < cSplit.length;i++) {
            var sc = cSplit[i];
            while (sc.charAt(0)==' ') sc = sc.substring(1,sc.length);
            if (sc.indexOf(readName) == 0) return sc.substring(readName.length,sc.length);
        }
        return null;
    }
}

다른 팁

확신하는. 사용자의 클릭 이벤트 목록을 쿠키 또는 서버 측 데이터 저장소에 저장해야합니다. 기록 된 모든 클릭에서 카운트를 하나씩 증가시키고 숫자가 3에 맞을 때 일을하십시오.

세션 쿠키를 사용하여 페이지 사이에 상태를 저장하십시오. 빠르고 널리 호환되며 브라우저가 종료되면 사용자의 쿠키 항아리를 스팸으로 유지하지 못하게됩니다.

모든 조언에 감사드립니다. 이 코드를 시도했습니다. 그러나 새로 고침 후 클릭 변수는 다시 0으로 이동합니다. 모든 새로운 가치를 저장해야합니다 클릭 쿠키 (또는 다른 것)로, 페이지의 링크를 클릭 할 때마다 그 번호가 상승합니다. 이런 식으로 쿠키에서 변수의 값을 변경할 수 있습니까?

Window.onload = function () {

var **allLinks** = document.getElementsByTagName("a");

var **clicked** = 0;

**doCookie**('popunder',clicked,1);

for(i=0;i<=allLinks.length;i++){
    allLinks[i].addEventListener("click",countClicks,true);
}

function **countClicks**(){           
        if(clicked == 3){
            popunder(); //something to do
        }
        else{
            alert(readCookie('popunder'));
            return clicked++;
        }
}

function **doCookie**(name,value,days) {
if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}

function **readCookie**(name) {
    var readName = name + "=";
    var cSplit = document.cookie.split(';');
    for(var i=0;i < cSplit.length;i++) {
        var sc = cSplit[i];
        while (sc.charAt(0)==' ') sc = sc.substring(1,sc.length);
        if (sc.indexOf(readName) == 0) return sc.substring(readName.length,sc.length);
    }
        return null;
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top