2008-12-19 35 views
1

点击3次是否有任何JavaScript的方式如何找出用户通过同一个域点击2次以上?如何找出用户通过我的网站使用JavaScript

我需要弹出窗口后,用户在任何地方点击网站上的3倍。我知道如何做一次点击后 - 与document.referreraddEventListener,但后来我迷路了。 我需要一些能够捕获所有点击事件(不仅是链接)并对它们进行计数的东西。

非常感谢

+0

目的是什么? – BenAlabaster 2008-12-19 22:18:37

+1

为什么对于恼人的弹出窗口和类似的东西,当然! – BobbyShaftoe 2008-12-19 22:20:12

回答

1

我想这和它工作得很好:

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

当然。您需要将用户的点击事件列表存储在cookie中或服务器端数据存储中。在每一个记录点击,由一个增加计数,并做你的事当数达到3

尝试使用会话cookie来存储页面之间的状态 - 他们是快速,相当广泛兼容,并且将归零时浏览器关闭,以防止垃圾邮件用户的cookie罐。

0

感谢您的所有建议。 我试过这段代码。但刷新后点击变量再次变为0。 我需要保存每一个新的价值点击成饼干(或任何其他),所以它的数量将上升每点击的链接页面上。 这样可以改变cookie中变量的值吗?

的window.onload =函数(){

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; 
} 
相关问题