Pergunta

Existe alguma maneira em JavaScript como descobrir usuário clicou através do mesmo domínio 2 ou mais vezes?

Eu preciso aparecer uma janela depois que o usuário clicou em qualquer lugar no site por 3 vezes. Eu sei como fazê-lo depois de um clique - com document.referrer ou addEventListener, mas então eu estou perdido

.

Eu preciso de algo que irá capturar todos os eventos de clique (não apenas links) e contá-los.

Foi útil?

Solução

Eu tentei isso e ele funcionou bem:

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

Outras dicas

Claro. Você precisa armazenar uma lista de eventos de clique dos usuários, em um cookie ou em um armazenamento de dados do lado do servidor. Em cada clique gravada, incrementar a contagem por um, e fazer a sua coisa quando o número atinge 3.

Tente usar cookies de sessão para estado loja entre as páginas -. Eles são rápidos, muito amplamente compatível e vai zerar quando o fecha navegador para baixo, para evitar spam potes de biscoito de seus usuários

Obrigado por todos os seus conselhos. Eu tentei este código. Mas depois que a atualização do clicado variável vai para 0 novamente. Eu preciso para salvar cada novo valor de clicado o bolinho (ou qualquer outra coisa), então seu número vai subir a cada clique em um link na página. É possível alterar o valor da variável no cookie dessa maneira?

= window.OnLoad função () {

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;
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top