Игнорировать строку запроса после расширения файла jQuery

0

Я использую скрипт, найденный здесь: http://www.blastam.com/blog/index.php/2011/04/how-to-track-downloads-in-google-analytics/ для динамического добавления кода отслеживания Google Analytics ссылки на документы PDF.

Я реализовал его и понял, что в документах PDF на этом сайте есть строка запроса, добавленная в конец URL-адреса. К сожалению, этот скрипт не распознает документы как PDF из-за строк запроса. Мне нужно изменить этот скрипт, чтобы игнорировать строку запроса после расширения файла.pdf, но у меня возникли проблемы с этим. Ниже приведен скрипт, который я немного изменил:

var filetypes = /\.(pdf?)$/i;
var baseHref = '';
if (jQuery('base').attr('href') != undefined)
        baseHref = jQuery('base').attr('href');
    jQuery('a').each(function() {
        var href = jQuery(this).attr('href');
        if (href && (href.match(/^https?\:/i)) && (!href.match(document.domain))) {
            jQuery(this).click(function() {
                var extLink = href.replace(/^https?\:\/\//i, '');
                _gaq.push(['_trackEvent', 'External', 'Click', extLink]);
                if (jQuery(this).attr('target') != undefined && jQuery(this).attr('target').toLowerCase() != '_blank') {
                    setTimeout(function() { location.href = href; }, 200);
                    return false;
                }
            });
        }
        else if (href && href.match(filetypes)) {
            jQuery(this).click(function() {
                var extension = (/[.]/.exec(href)) ? /[^.]+$/.exec(href) : undefined;
                var filePath = href;
                _gaq.push(['_trackEvent', 'Download', 'Click-' + extension, filePath]);
                if (jQuery(this).attr('target') != undefined && jQuery(this).attr('target').toLowerCase() != '_blank') {
                    setTimeout(function() { location.href = baseHref + href; }, 200);
                    return false;
            }
        });
    }
});

Какой был бы лучший способ проанализировать URL-адрес и остановиться после того, как он найдет расширение .pdf?

Теги:
pdf
google-analytics

1 ответ

0
Лучший ответ

Чтобы удалить строку запроса, прежде чем искать расширение файла, вы можете изменить это:

 var extension = (/[.]/.exec(href)) ? /[^.]+$/.exec(href) : undefined;
 var filePath = href;

к этому:

 var fname = href;
 var query = href.indexOf("?");
 if (query !== -1) {
     fname = href.substr(0, query);
 }
 var extension = (/[.]/.exec(fname)) ? /[^.]+$/.exec(fname) : undefined;
 var filePath = fname;

Рабочая демонстрация: http://jsfiddle.net/jfriend00/JV78r/

  • 0
    Спасибо за ваш ответ, у меня все еще есть проблемы с получением кода отслеживания для вставки в элемент <a> . Попробовав несколько разных вещей с вашим ответом, доложу о моих выводах.
  • 0
    Я получил эту работу, изменив if (href && href.match(filetypes)) на if (fname && fname.match(filetypes)) основываясь на вашем ответе. Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню