代码之家  ›  专栏  ›  技术社区  ›  Adriana

如何使用javascript在我的网站上发现用户点击了3次

  •  1
  • Adriana  · 技术社区  · 16 年前

    JavaScript中是否有任何方法可以发现用户在同一个域中点击了2次或更多次?

    我需要弹出一个窗口后,用户点击网站上的任何地方3次。我知道如何做到这一点后,点击与 document.referrer addEventListener

    我需要的东西,将捕获所有点击事件(不仅是链接)和计数他们。

    3 回复  |  直到 6 年前
        1
  •  2
  •   Anirvan    16 年前

    当然您需要在cookie或服务器端数据存储中存储用户单击事件的列表。在每次录制的点击中,将计数增加一,然后在数字达到3时进行操作。

    尝试使用会话cookie来存储页面之间的状态——它们速度快,兼容范围广,并且在浏览器关闭时将归零,以防止对用户的cookie罐进行垃圾邮件发送。

        2
  •  1
  •   Paolo Bergantino    16 年前

    我试过这个,效果很好:

    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
  •   Adriana    16 年前

    谢谢你的建议。 点击 我需要保存每一个新的价值 点击 进入cookie(或其他),所以它的数量会随着页面上链接的每次点击而增加。 可以这样更改cookie中变量的值吗?

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