2011-12-03 61 views
9

有沒有什麼辦法可以檢測到支持rel =「noreferrer」的Javascript?如何檢測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標頭將具有或不具有引薦信息。 (我認爲)

可以使用這裏找到的代碼訪問HTTP標頭中的JavaScript:Accessing the web page's HTTP Headers in JavaScript

+0

原來的解決方案:)我不能使用它,因爲我需要在原地檢查 – andufo

+1

是的,我知道你的意思。如果說,鏈接在新窗口中打開,則可以使用JavaScript捕獲該鏈接,然後查看自己頁面中的標題信息。 – Alex

15

我通過創建一個name屬性隱藏的iframe檢測noreferrer支持,然後我創建了具有target<a rel="noreferrer">鏈接屬性等於iframe的name屬性,並且鏈接指向當前域上的任何資源。鏈接到about:blank也可以,但在Firefox和IE中有問題,所以應該鏈接到服務器上有意空白的文件。資源加載到iframe後,請檢查[the iframe].contentDocument.referrer === ""。如果這是真的,則支持noreferrer

我的實施示例可在hotlink.js中找到。具體見on_ready

+0

相關:https://github.com/Modernizr/Modernizr/issues/963 –