Javascript 忽略文件扩展名jQuery后的查询字符串

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') !

我正在使用一个脚本:动态地将Google分析跟踪代码添加到指向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;

工作演示:

感谢您的回答,但是我在将跟踪代码注入
元素时仍然遇到一些问题。在你的答案中尝试一些不同的东西,将报告我的发现。我根据你的答案将
if(href&&href.match(filetypes))
更改为
if(fname&&fname.match(filetypes))
。非常感谢。