0

我需要从我们网站上的一个目录中跟踪出站点击,并希望这样做,以便实际的 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 时,它不起作用(不记录点击)。我只是好奇为什么它不能使用.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;

});
4

2 回答 2

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');

});
于 2012-04-04T01:22:51.993 回答
0

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

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

$(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”中这样做,因为这并不能保证用户实际点击了链接。

于 2012-04-04T01:31:06.970 回答