【问题标题】:Jquery clicktracking mousedown vs clickJquery clicktracking mousedown vs click
【发布时间】:2012-04-04 01:19:07
【问题描述】:

我需要跟踪来自我们网站目录的出站点击,并希望这样做以便实际的 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;

});

【问题讨论】:

    标签: javascript jquery ajax click-tracking


    【解决方案1】:

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

    【讨论】:

    • 谢谢,但即使 mousedown 和 click.php 需要 10 秒才能完成(我在 click.php 文件中包含 sleep(10) )它仍然可以工作。因此它立即将用户发送到该站点,然后大约 10 秒后将点击记录输入到表中。这就是我想要它做的事情,我想我只是想知道为什么它适用于 mousedown 而不是点击,以及我是否正在做任何可能导致点击跟踪问题的事情。
    • 好的。我已经编辑了我的答案。您想使用 jQuery 发送 $.post() 请求——这会将请求发送到服务器,而不是等待它完成,然后再将用户发送到链接目的地。这会将所有必要的信息发送到您的脚本以进行处理不需要用户等待它完成。另外,我会尽量避免使用sleep(),因为它对 UI 不是很好。
    • 非常感谢我现在需要离开,但会尽快测试。另外,我只是把 sleep 放在那里看看如果服务器真的很慢会发生什么,以及它是否会减慢人们到达目标 url 的速度。所以我会在生产中删除它。
    【解决方案2】:

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

    这在我测试时有效,但需要在您的 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”中执行此操作,因为这并不能保证用户实际点击了链接。

    【讨论】:

    • 非常感谢,但不知何故,这并没有为我执行脚本。它重定向用户,但不会像使用 mousedown 失败时那样将记录添加到表中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-08
    • 2015-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-24
    相关资源
    最近更新 更多