Chrome、Safari、Firefox、またはその他のブラウザは、リダイレクトリンクのリンク先URLにアクセスしたことをどのようにして認識しますか?
ブラウザがリダイレクトURLが到達するURLを知っていて、visitedスタイルをリンクに適用することは常に興味深いことです。
私が求めていることを理解するには:
ただし、リンクはいくつかのgoogle.com/url...
ページ。リンクの履歴をアフィリエイトするURLなどをブラウザに伝えるためにGoogleがマークアップに入れるものはありますか?ブラウザはGoogleの検索結果を特定の方法で読み取るだけですか?
リンクにカーソルを合わせているときにステータスバーに注意を払うと、最初は「クリーンな」URLを指していることがわかります。
(3つのマウスボタンのいずれかを使用して)リンクをクリックした場合にのみ、JavaScriptイベントがトリガーされ、リンクの宛先がGoogleのURLリダイレクトに変更されます。
私の主張を確認するには、紫色のリンクのいずれかを右クリックして、コンテキストメニューを閉じます。 Googleの検索結果からサイトにアクセスしたことがない限り、色が変わることがわかります。1
GoogleがリダイレクトURLをどのように挿入するか正確にわかりません2、しかし一般的な考え方はこれです:
// define a function `f' that changes a link's clean URL to a redirection URL
var f = function () {
// prepend `http://www.google.com/url?rct=j&url=' to the link's target
this.href = 'http://www.google.com/url?rct=j&url=' + escape(this.href);
// don't invoke this function anymore when clicking the link
this.removeEventListener('click', f);
// don't invoke this function anymore when right-clicking the link
this.removeEventListener('contextmenu', f);
}
// save all <a> tags in an array `a'
var a = document.getElementsByTagName('a');
// for each <a> tag in the array `a'
for (var i = 0; i < a.length; i++) {
// execute function `f' when clicking the link
a[i].addEventListener('click', f);
// execute function `f' when right-clicking the link
a[i].addEventListener('contextmenu', f);
}
this jsFiddle を試して、どのように機能するかを確認できます。
1 Chromium 25(Ubuntu 12.10)およびChrome 26(Windows 7)でテスト済み
2 最小化されたJavaScriptは少し読みにくいです。