2009-10-05 103 views
1

我試圖做一個鏈接跟蹤腳本。它應該像谷歌分析一樣,只有它應該發佈到我們自己的服務器。我爲此使用jQuery。我寫到目前爲止的代碼如下:Javascript鏈接跟蹤腳本+ Safari

jQuery(document).ready(function() { 

var opts; 

jQuery.fn.trackAllLinks = function(settings) { 
    settings = jQuery.extend({}, jQuery.fn.trackAllLinks.defaults, settings); 
    opts = settings; 

    function track() { 
     href = jQuery(this).attr('href'); 
     var trackImage = new Image(1, 1); 
     trackImage.src = opts.linkredirector + '?eurl=' + jQuery.URLEncode(href) + '&rnd=' + new Date().getTime() + '&title=trackerimage.gif'; 
     trackImage.onload = function() { 
      trackImage.onload = null; 
      doNothing(); 
     } 
     delay(300); 
     return true; 
    }; 

    function delay(mseconds) { 
     var currentTime = new Date(); 
     var endTime = currentTime.getTime() + mseconds; 
     while (currentTime.getTime() < endTime) { 
      currentTime = new Date(); 
     } 
    } 

    function doNothing() { 
    } 

    if(jQuery(this).is("a")) { 
     jQuery(this).click(track); 
    } 

    jQuery(this).find("a").click(track); 

}; 

jQuery.fn.trackAllLinks.defaults = { 
    linkredirector : '__url_to_post_on__' 
}; 

}); 

它適用於除Safari以外的所有瀏覽器。當我使用郵件鏈接或錨點它的作品,但是當我鏈接到另一個頁面不起作用。我一直在測試很多不同的實現,我無法實現它的工作。你們中的任何一個人都知道我錯過了什麼?我試圖瞭解Google Analytics的運作方式,並且據我所知,它的確如此。當我使用WireShark監控我的網絡時,我發現Google的圖像被請求,但是我的圖像不是。

映入眼簾, 大安

+0

它可能沒有多大區別,但是這個問題在Windows上的Safari?或在Mac上? – scunliffe 2009-10-05 12:26:36

+0

我已經在兩個版本中測試過它們,並且它們都給出了相同的問題。在Mac上的Safari瀏覽器中,我能夠調試javascript並正確執行它。它就像圖像沒有及時加載,因爲在點擊之後你將會在不同的頁面上。 – 2009-10-05 13:28:12

回答

0

嘗試增加延遲到什麼巨大的,看看Safari瀏覽器只是走一點點時間比你的延遲 - 這是我在這個問題的猜測。

+0

我忘了告訴這個,但已經嘗試設置它更長一點..直到幾秒鐘,似乎沒有任何工作:/它就好像Safari正在等待JavaScript完成之前它會請求圖像。我也剛剛看到,當我將它與GA結合,並且我的請求在GA之前完成時,它將被執行。 – 2009-10-05 12:44:34

+0

如何取消默認操作,但將其設置爲稍後發生。即取消導航,但設置超時後短暫延遲導航? – Fenton 2009-10-07 07:53:23

0

這是隨機的,但你可以嘗試在查詢字符串添加一個隨機參數(這兩個名字&值),如:

Math.random(0, 1000) + '=' + Math.random(0, 1000) 

我不得不這樣做,在過去獲得的Safari註冊一個動態加載的資源。 (我看你已經有&rnd=了,但是也許試着隨機化這個名字呢?)