Cómo averiguar usuario ha hecho clic 3 veces a través de mi sitio web con Javascript

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

  •  23-08-2019
  •  | 
  •  

Pregunta

¿Hay alguna manera en JavaScript cómo averiguar usuario ha hecho clic a través del mismo dominio 2 o más veces?

Necesito una ventana emergente cuando el usuario hace clic en cualquier lugar en el sitio por 3 veces. Yo sé cómo hacerlo después de un clic - o con document.referrer addEventListener, pero entonces estoy perdido

.

Necesito algo que va a capturar todos los eventos de clic (no sólo los enlaces) y contarlos.

¿Fue útil?

Solución

He intentado esto y funcionó bien:

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

Otros consejos

Claro. Es necesario para almacenar una lista de eventos de clic de los usuarios, ya sea en una cookie, o en un almacén de datos del lado del servidor. Por cada clic grabada, incrementar la cuenta por uno, y hacer su cosa cuando golpea el número 3.

Trate de usar cookies de sesión para almacenar el estado entre las páginas -. Son rápidos, bastante ampliamente compatibles, y pondrá a cero cuando el navegador se cierra, para evitar el correo basura tarros de galletas de los usuarios

Gracias por todo su consejo. Probé este código. Pero después de la actualización de la hace clic variables va a 0 de nuevo. Necesito ahorrar cada nuevo valor de clic en la cookie (o cualquier otra cosa), por lo que su número se incrementará, por cada clic en el enlace de la página. ¿Es posible cambiar el valor de la variable en la cookie de esta manera?

  

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;
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top