2009-10-05 67 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=了,但是也许试着随机化这个名字呢?)