2012-04-04 53 views
0

我需要跟蹤站點目錄中的出站點擊,並且希望這樣做,以便實際的url位於href中。類似於:jquery clicktracking mousedown vs點擊

<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函數,只能與.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

您沒有給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'); 

}); 
+0

謝謝,但即使mousedown和click.php需要10秒鐘才能完成(我在click.php文件中包含了sleep(10)),它將起作用。因此,它立即將用戶發送到該網站,然後大約10秒鐘後,該點擊記錄被輸入到表格中。這就是我想要它做的,我想我只是想知道爲什麼它與mousedown一起工作,而不是點擊,以及我是否做了任何可能導致點擊跟蹤問題的事情。 – Frank 2012-04-04 01:28:26

+0

好的。我編輯了我的答案。您希望使用jQuery發送'.post()'請求 - 這會將請求發送到服務器,而不是等待它完成後再將用戶傳送到鏈接目標。這會將所有必要的信息發送給腳本進行處理,而無需用戶等待其完成。另外,我儘量避免使用'sleep()',因爲它對UI不太好。 – hohner 2012-04-04 01:32:23

+0

非常感謝我現在需要離開,但會盡快對此進行測試。另外,我只是把睡眠放在那裏,看看如果服務器真的很慢,會發生什麼,以及是否會減慢人們到達目的地URL。所以我會刪除在生產中。 – Frank 2012-04-04 01:50:22

0

我不明白爲什麼它不起作用。

這工作時,我測試,但該網址端點需要固定在你的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; 
    }); 
}); 

我不會做一個「鼠標按下」,因爲這並不能保證用戶實際上點擊了鏈接。

+0

非常感謝,但不知何故,這不會爲我執行腳本。它會重定向用戶,但不會像在使用mousedown時沒有成功那樣將記錄添加到表中。 – Frank 2012-04-04 01:52:04