2011-12-03 18 views
9

C'è un modo per rilevare il supporto per rel = "noreferrer" con Javascript?Come posso rilevare il supporto rel = "noreferrer"?

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

Soluzione - $ .Browser è deprecato, e può essere spostato in un plugin in una futura versione di jQuery.

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

Domanda affascinante. +1! –

+0

@DavidThomas potresti voler controllare la soluzione che ho postato sopra. – andufo

risposta

0

No, non ce n'è. Le intestazioni dei referrer sono al di fuori del dominio di JavaScript.

Se è particolarmente importante, è possibile verificare se il browser (navigator.userAgent) è noto per supportare o non supportare noreferrer.

+0

so che questo è deprecato, ma funziona ancora per il mio scopo: var is_webkit = $ .browser.webkit; – andufo

+5

Questo è sbagliato. Rilevo il supporto del noreferrer in hotlink.js (https://github.com/eligrey/hotlink.js/blob/master/hotlink.js) con iframe. –

1

In teoria è possibile creare un XMLHttpRequest utilizzando il collegamento fornito nell'attributo href.

L'intestazione HTTP restituita avrebbe o meno informazioni sui referenti, a seconda che il browser avesse implementato questa funzionalità o meno. (Credo)

È possibile accedere le intestazioni HTTP in JavaScript utilizzando il codice trovato qui: Accessing the web page's HTTP Headers in JavaScript

+0

soluzione originale :) Non posso usarlo perché ho bisogno di controllare in situ – andufo

+1

Sì, so cosa intendi. Se dici, il link si apre in una nuova finestra, puoi catturarlo in JavaScript e quindi dare un'occhiata alle informazioni di intestazione nella tua pagina. – Alex

15

rilevo noreferrer sostegno con la creazione di un iframe nascosto con un attributo name, e poi creo un collegamento <a rel="noreferrer"> con la sua target attributo uguale all'attributo name dell'iframe e il punto di collegamento a qualsiasi risorsa nel dominio corrente. Il collegamento a about:blank funziona anche, ma ha problemi con Firefox e IE, quindi dovresti invece collegarti a un file intenzionalmente vuoto sul tuo server. Dopo aver caricato la risorsa nell'iframe, controllare che [the iframe].contentDocument.referrer === "". Se questo è vero, è supportato noreferrer.

Un esempio della mia implementazione è disponibile in hotlink.js. Nello specifico, vedere on_ready.

+0

Correlati: https://github.com/Modernizr/Modernizr/issues/963 –

Problemi correlati