2016-11-08 6 views
-1

私はすべてのボタン/リンクのクリックをGAに報告するスマートスクリプトを作成しています。 ファイルのダウンロードからリダイレクトを分離したいと考えています。使用されるタグは常にaで、href属性が指定されています。HREFがファイルかリダイレクトかを判断する最も効率的な方法

それでは、私は、次のhrefを持っているとしましょう:

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

は、最も効率的なアプローチは、すべての可能なファイル拡張子を持つ配列を有し、かつ、その後hrefまたはそれが正規表現であるべきか、何か他のものであることを照合することでしょう?

+0

することで、ヘッダーに関連していますあなたがサーバーから受ける応答。例えばhttp://stackoverflow.com/myfile.pdfを見ると、ページが表示され(404)、ブラウザはダウンロードしようとしません。 – Dekel

+1

Dekelの言うとおり、* any * URLはファイルのダウンロードにつながる可能性があります。 'aboutus /'はファイルのダウンロードにつながる可能性があります。 '/'を指定するとファイルがダウンロードされる可能性があります。 –

+1

サーバー側のスクリプトと適切なヘッダーを使用すると、これらのいずれかがファイルのダウンロードになる可能性があります。ヘッダーを確認するだけです。http://stackoverflow.com/questions/220231/ Web-pages-http-headers-in-javascriptにアクセスする – JKirchartz

答えて

2

コメントで既に述べたように、ブラウザがリンクで何をするかをURLから知ることは不可能です。

ブラウザはサーバーから取得した応答を読み取り、応答内のヘッダーに基づいて何を行うかを決定します(ページの表示、リダイレクト、ダウンロードなど)。

私はあなたのサーバー側で作成したリンクをチェックするために非常に良くなると思うし、リンクは、ダウンロード・ファイルの場合 - このリンクにいくつかのクラスを追加します。

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

とオンこのdownloadableクラス持っ<a>タグのためのあなたのjavascriptのコードチェック:(あなたが本当にしたい場合)

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

別のオプションは、応答ヘッダを解析し、HEADリクエストを送信することで、decidするヘッダーに基づいて、電子何をすべきか:

$('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); 
    }); 
}); 

ファイルのダウンロード私は本当にあなたにこのオプションに対してを助言するが、あなたが本当にそれを行う必要がある場合、それはここです:)

関連する問題