2011-12-03 15 views
9

Có cách nào tôi có thể phát hiện hỗ trợ cho rel = "noreferrer" với Javascript không?Làm cách nào để phát hiện hỗ trợ rel = "noreferrer"?

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

Giải pháp - $ .browser bị phản đối, và nó có thể được chuyển đến một plugin trong một thông cáo tương lai của jQuery.

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

Câu hỏi hấp dẫn. +1! –

+0

@DavidThomas bạn có thể muốn kiểm tra giải pháp tôi đã đăng ở trên. – andufo

Trả lời

0

Không, không có. Tiêu đề liên kết giới thiệu nằm ngoài miền JavaScript.

Nếu điều này đặc biệt quan trọng, bạn có thể kiểm tra xem trình duyệt (navigator.userAgent) có được hỗ trợ hay không hỗ trợ noreferrer.

+0

tôi biết điều này không được chấp nhận, nhưng vẫn hoạt động cho mục đích của tôi: var is_webkit = $ .browser.webkit; – andufo

+5

Điều này là sai. Tôi phát hiện hỗ trợ noreferrer trong hotlink.js (https://github.com/eligrey/hotlink.js/blob/master/hotlink.js) với iframe. –

1

Bạn có thể tạo ra một XMLHttpRequest bằng cách sử dụng liên kết được cung cấp trong thuộc tính href.

Tiêu đề HTTP trả về có hoặc có thông tin liên kết giới thiệu hay không, tùy thuộc vào việc trình duyệt đã triển khai chức năng này hay chưa. (Tôi nghĩ)

Bạn có thể truy cập Http Headers trong JavaScript sử dụng mã tìm thấy ở đây: Accessing the web page's HTTP Headers in JavaScript

+0

giải pháp ban đầu :) tôi không thể sử dụng nó vì tôi cần phải kiểm tra tại chỗ – andufo

+1

Vâng tôi biết những gì bạn có ý nghĩa. Nếu nói, liên kết được mở trong cửa sổ mới, bạn có thể chụp liên kết đó trong JavaScript và sau đó xem thông tin tiêu đề trong trang của riêng bạn. – Alex

15

tôi phát hiện hỗ trợ noreferrer bằng cách tạo ra một iframe ẩn với một thuộc tính name, và sau đó tôi có thể tạo một liên kết <a rel="noreferrer"> với target của nó thuộc tính bằng thuộc tính name của khung nội tuyến và có điểm liên kết tới bất kỳ tài nguyên nào trên miền hiện tại. Liên kết đến about:blank cũng hoạt động, nhưng nó có vấn đề trong Firefox và IE, vì vậy bạn nên liên kết với một tệp cố ý trống trên máy chủ của bạn. Sau khi tài nguyên được tải trong khung nội tuyến, hãy kiểm tra xem [the iframe].contentDocument.referrer === "". Nếu điều này là đúng, noreferrer được hỗ trợ.

Ví dụ về triển khai của tôi có sẵn trong hotlink.js. Cụ thể, xem on_ready.

+0

Liên quan: https://github.com/Modernizr/Modernizr/issues/963 –