Javascript скрипт отслеживания ссылок + Safari - PullRequest
2 голосов
/ 05 октября 2009

Я пытаюсь сделать скрипт отслеживания ссылок. Он должен работать как 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 голосов
/ 10 октября 2009

Это случайно, но вы можете попробовать добавить в строку запроса случайный параметр (как имя, так и значение), например:

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

В прошлом мне приходилось делать это, чтобы Safari регистрировал динамически загружаемый ресурс. (Я вижу, что у вас уже есть &rnd=, но, может быть, вы тоже попробуйте рандомизировать имя?)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...