Javascript 忽略文件扩展名jQuery后的查询字符串
我正在使用一个脚本:动态地将Google分析跟踪代码添加到指向PDF文档的链接中 我已经实现了它,并且意识到这个站点中的PDF文档都有一个附加到URL末尾的查询字符串。不幸的是,由于查询字符串的原因,此脚本无法识别PDF文档。我需要修改此脚本以忽略.pdf文件扩展名后的查询字符串,但在执行此操作时遇到问题。下面是我稍微修改过的脚本:Javascript 忽略文件扩展名jQuery后的查询字符串,javascript,jquery,pdf,google-analytics,Javascript,Jquery,Pdf,Google Analytics,我正在使用一个脚本:动态地将Google分析跟踪代码添加到指向PDF文档的链接中 我已经实现了它,并且意识到这个站点中的PDF文档都有一个附加到URL末尾的查询字符串。不幸的是,由于查询字符串的原因,此脚本无法识别PDF文档。我需要修改此脚本以忽略.pdf文件扩展名后的查询字符串,但在执行此操作时遇到问题。下面是我稍微修改过的脚本: var filetypes = /\.(pdf?)$/i; var baseHref = ''; if (jQuery('base').attr('href') !
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;
工作演示:感谢您的回答,但是我在将跟踪代码注入
元素时仍然遇到一些问题。在你的答案中尝试一些不同的东西,将报告我的发现。我根据你的答案将if(href&&href.match(filetypes))
更改为if(fname&&fname.match(filetypes))
。非常感谢。