Javascript链接跟踪脚本+ Safari

时间:2009-10-05 11:45:41

标签: javascript jquery safari hyperlink

我正在尝试制作链接跟踪脚本。它应该像Google Analytics一样工作,只有它应该发布到我们自己的服务器。我正在使用jQuery。我到目前为止编写的代码如下:

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之外,它在所有浏览器中都能正常运行。当我使用mailto链接或锚点时,它可以工作,但是当我链接到另一个页面时它不起作用。我一直在测试很多不同的实现,我无法让它工作。你们任何人都知道我错过了什么?我试图了解Google Analytics的工作原理,据我所知,它也是如此。当我使用WireShark监控我的网络时,我发现正在请求Google的图像,但我的图像不是。

映入眼帘, 大安

1 个答案:

答案 0 :(得分:0)

这是随机的,但您可以尝试在查询字符串中添加随机参数(名称和值),例如:

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

我过去必须这样做才能让Safari注册一个动态加载的资源。 (我看到你已经&rnd=了,但是也可以尝试随机化这个名字?)