2013-10-24 73 views
-1

我想考慮很多因素來跟蹤我網站上的訪問者。我通過連續的Javascript監控來執行此跟蹤,並通過AJAX調用實時將收集的數據發送到服務器。在任何document.location更改之前保證Javascript AJAX的執行

我的問題是,當用戶點擊一個正常的鏈接或由JS處理改變document.location的DOM元素後,最後一次點擊不會被我的腳本記錄併發送到我的服務器。

我想我應該改變每個DOM元素的onClick事件先讓我的腳本做他的事情(preventDefault),然後繼續執行原始的onClick事件,但這個解決方案似乎不合適,有點冒險(如果有任何onClick事件獲取創建後,我第一次改變所有事件,我不能做那個掃描&連續修改,原因很明顯)。

這樣做的最好方法是什麼?

+0

你試過的郵政編碼? – Salim

回答

1

您可以使用window.onbeforeunload

function getTrack(e){ 
    //do your stuff 
} 

window.onbeforeunload=getTrack; 
0

我覺得這取決於你試圖跟蹤數據,你應該嘗試看看谷歌分析這一點,它會自動跟蹤它。

+0

來吧人,我正在設計一個類似谷歌分析的工具,你告訴我使用它?我希望自己能夠做到他們所做的,而不是使用他們的產品。另外,Google-Analytics在點擊鏈接時不會跟蹤用戶鼠標的位置。 – Octavian

0

無法確保來自onbeforeunload或onunload的請求將使其到達服務器。現代瀏覽器取消請求。

如果您希望確保任何傳出的域名呼叫都將其記錄到日誌中,您基本上需要劫持所有點擊並取消操作。您將發送Ajax調用,並在完成後執行頁面導航。

0

可能是一種使用jQuery的方式。

<a class=' location' href=' page.php'> click </a> 
<script> 
$(document).ready (function (e){ 
     $(".location").click (function(){ 
     e.preventDefaults(); 
    var link = $(this).attr("href"); 
     $.ajax({ 
      type:"GET", 
      url:"update_visitoi_infoo.php", 
      data:{v_info:"value"}, 
      success:function(resp) { 
        document.location.href=link; 
      } 
    }); 
    }); 
}); 
相關問題