2011-12-03 11 views
9

Javascriptでrel = "noreferrer"のサポートを検出する方法はありますか?rel = "noreferrer"サポートはどのように検出できますか?

<a href="http://example.com" rel="noreferrer">link without referral</a> 

ソリューション - $の.browserは廃止され、それはjQueryの将来のリリースでは、プラグインに移動させることができます。

var is_webkit = $.browser.webkit; 
if(is_webkit) { 
    alert('supports rel="noreferrer"'); 
} 
+0

魅力的な質問です。 +1! –

+0

@DavidThomasあなたは上に投稿した解決策をチェックしたいかもしれません。 – andufo

答えて

0

いいえ、ありません。リファラーヘッダーはJavaScriptのドメイン外にあります。

特に重要なのは、ブラウザ(navigator.userAgent)がnoreferrerをサポートするかサポートしていないかを確認できます。

+0

これは推奨されていませんが、私の目的ではまだ動作しています:var is_webkit = $ .browser.webkit; – andufo

+5

これは間違っています。私はiframeでhotlink.js(https://github.com/eligrey/hotlink.js/blob/master/hotlink.js)のnoreferrerサポートを検出します。 –

1

href属性で提供されるリンクを使用して、XMLHttpRequestを理論的に作成できます。

返されたHTTPヘッダーは、ブラウザがこの機能を実装しているかどうかに応じて、参照元情報を持つかどうかを示します。 (と思う)

あなたがここで見つけるコード使用してJavaScriptでHTTPヘッダーにアクセスすることができます。私はname属性で非表示のiframeを作成することにより、noreferrerのサポートを検出し、その後、私はそのtarget<a rel="noreferrer">リンクを作成Accessing the web page's HTTP Headers in JavaScript

+0

オリジナルのソリューション:)私は現場でチェックする必要があるので、私はそれを使用することはできません – andufo

+1

はい私はあなたが何を意味知っています。たとえば、リンクが新しいウィンドウで開かれた場合は、JavaScriptでそのリンクを取得してから、自分のページのヘッダー情報を確認できます。 – Alex

15

を属性はiframeのname属性と等しく、リンクは現在のドメイン上の任意のリソースを指します。 about:blankへのリンクも機能しますが、FirefoxとIEでは問題があるため、代わりにサーバー上の意図的に空のファイルにリンクする必要があります。リソースがiframeにロードされたら、[the iframe].contentDocument.referrer === ""にチェックを入れます。これが当てはまる場合はnoreferrerがサポートされます。

実装例はhotlink.jsです。具体的には、on_readyを参照してください。

+0

関連:https://github.com/Modernizr/Modernizr/issues/963 –

関連する問題