Я использую скрипт, найденный здесь: 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
?
Чтобы удалить строку запроса, прежде чем искать расширение файла, вы можете изменить это:
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/
<a>
. Попробовав несколько разных вещей с вашим ответом, доложу о моих выводах.if (href && href.match(filetypes))
наif (fname && fname.match(filetypes))
основываясь на вашем ответе. Спасибо!