Jquery点击跟踪mousedown vs click

时间:2012-04-04 01:19:08

标签: javascript jquery ajax click-tracking

我需要跟踪我们网站上目录的出站点击次数,并希望这样做,以便实际的网址在href中。类似的东西:

 <a href="http://www.example.com" id="a24" class="link" >Go to Example</a>

这是我在下面使用的JQuery。 click.php文件基本上是查找链接ID,然后将点击信息插入到mysql表中。

即使click.php需要很长时间才能完成,这似乎也能正常工作。换句话说,即使我在完成之前将click.php设置为休眠10秒,用户也会立即链接到目标网址。

我正在使用 $('a.link')。mousedown 而不是 $('a.link')。点击当我使用.click时,它不起作用(不记录点击)。我只是好奇为什么它不能使用 .click 功能,只适用于 .mousedown 功能。

这是用JQuery捕获点击的好方法还是有更好的方法? (我意识到任何关闭Javascript的人都不会被计算在内。)

$('a.link').mousedown( function(e){

        var my_id = $(this).attr('id');

        $.ajax({    
          type: "GET",
          url: "/tiger/sal/clicks/click.php?id=my_id"
        });

        return true;

});

2 个答案:

答案 0 :(得分:2)

在浏览器指示之前,您没有给jQuery足够的时间来计算所有内容。你为什么不尝试这样的事情:

$('a.link').click( function(e){

   // Prevent the browser from running away
   e.preventDefault();

   // I've changed this to POST to make it a bit more secure
   // You can access the link ID with $_POST['link_id'] now
   $.post('/tiger/sal/clicks/click.php', { link_id: $(this).attr('id') });

   // Wave goodbye
   window.location.href = $(this).attr('href');

});

答案 1 :(得分:0)

我不明白为什么它不起作用。

这在我测试它时有效但是url端点需要在你的AJAX调用中修复:

$(function(){
  $('a.link').click( function(e){
    var my_id = $(this).attr('id');
    var href = $(this).attr('href');
    $.ajax({    
      type: "GET",
      url: "/tiger/sal/clicks/click.php?id=" + my_id,
      success: function(d){
          // allow it to successfully call the server before redirecting.
          window.location = href;
      }
    });
    return false;
  });
});

我不会在“mousedown”中这样做,因为这并不能保证用户实际点击链接。