Jquery clicktracking mousedown vs click

Jquery clicktracking mousedown vs click

本文关键字:click vs mousedown clicktracking Jquery      更新时间:2023-09-26

我需要跟踪我们网站上一个目录的出站点击,并希望这样做,以便实际的url在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秒,用户也会立即链接到目标url。

我使用的是$('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;
});

您没有给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');
});

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

当我测试它时,这是有效的,但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"中这样做,因为这不能保证用户真的点击了链接。