Как узнать, что пользователь кликнул 3 раза через мой сайт с помощью JavaScript - PullRequest
1 голос
/ 20 декабря 2008

Есть ли способ в JavaScript, как узнать, что пользователь нажал на один и тот же домен 2 или более раз?

Мне нужно всплывающее окно после того, как пользователь щелкнул 3 раза в любом месте сайта. Я знаю, как это сделать после одного клика - с document.referrer или addEventListener, но потом я потерялся. Мне нужно что-то, что будет захватывать все события кликов (не только ссылки) и подсчитывать их.

Большое спасибо

Ответы [ 3 ]

2 голосов
/ 20 декабря 2008

Конечно. Вам необходимо сохранить список событий щелчков пользователей, либо в файле cookie, либо в хранилище данных на стороне сервера. На каждом зарегистрированном щелчке увеличивайте количество на единицу и делайте свое дело, когда число достигает 3.

Попробуйте использовать сеансовые куки-файлы для хранения состояния между страницами - они быстрые, довольно широко совместимы и будут обнуляться при выключении браузера, чтобы не спамить файлы cookie ваших пользователей.

1 голос
/ 20 декабря 2008

Я попробовал это, и все работало нормально:

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;
    }
}
0 голосов
/ 20 декабря 2008

Спасибо за все ваши советы. Я попробовал этот код. Но после обновления переменная clicked снова становится равной 0. Мне нужно сохранять каждое новое значение нажал в куки (или что-то еще), поэтому его число будет увеличиваться с каждым кликом по ссылке на странице. Можно ли таким образом изменить значение переменной в cookie?

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;
}
...