确定HREF是文件还是重定向的最有效方法

时间:2016-11-08 14:29:07

标签: jquery

我正在制作一个智能脚本,将所有按钮/链接点击报告到GA中。 我想将重定向与文件下载分开。使用的代码始终为a,并指定了href属性。

所以,让我说我有以下hrefs:

"/"
"aboutus/"
"//www.google.com"
"file1.txt"
"file2.PDF"
"file3.jpeg"

最有效的方法是使用包含所有可能的文件扩展名的数组,然后将其与href匹配,还是应该是regEx或其他?

1 个答案:

答案 0 :(得分:2)

正如评论中已经提到的,不可能只从URL知道浏览器将对链接做什么。

浏览器会读取它从服务器获取的响应,并根据响应中的标头决定要执行的操作(查看页面,重定向,下载等)。

我认为在服务器端检查您创建的链接会更好,如果链接是可下载文件,请在此链接中添加一些类:

<a href="file.pdf" class="downloadable">Click to download</a>

在您的javascript代码中检查具有此<a>类的downloadable代码:

$('a.downloadable').click(function() {
    // Do whatever you need once the link was clicked.
})

另一个选项(如果你真的想)是发送一个HEAD请求,解析响应头,并根据标题来决定做什么:

$('a').click(function(e) {
    e.preventDefault()
    $.ajax({
        type: "HEAD",
        async: true,
        url: URL,
    }).done(function(message,text,jqXHR){
        // here you can use jqXHR.getResponseHeader('header-name);
    });
});
  

我真的建议你反对这个选项,但如果你真的必须这样做,那就在这里:)