2013-06-05 13 views
7

Sto lavorando su un motore di pubblicità javascript e mi piacerebbe che rispettasse l'intestazione DNT di Firefox.È possibile controllare il valore di Firefox DNT con javascript?

C'è un modo in cui javascript può controllare se l'utente ha impostato DNT su on o off in firefox (o non ha impostato alcuna preferenza) senza ottenere aiuto dal server?

+1

Nota che Firefox non è l'unico browser che implementa DNT. – BoltClock

+0

annotato) ........ –

risposta

10

Penso che tu sia alla ricerca di navigator.doNotTrack:

console.log(window.navigator.doNotTrack); 
// prints "yes" if DNT is enabled; otherwise this is "unspecified" in Firefox 

MDN spiega che in Firefox:

Quando l'intestazione do-not-track invia "1", navigator.doNotTrack è "sì" . Quando l'intestazione non è impostata, navigator.doNotTrack è "non specificato". Quando l'intestazione invia "0" (attualmente non supportato in Firefox), navigator.doNotTrack è "no".

In altri browser:

IE9, Opera 12 e Safari 5.1 sono basati su una versione precedente di questa specifica dove navigator.doNotTrack è il valore inviato per l'intestazione do-not-track.

IE9 usa un prefisso fornitore, vale a dire, navigator.msDoNotTrack

Quindi, si potrebbe rilevare DNT in generale facendo:

var isDNT = navigator.doNotTrack == "yes" || navigator.doNotTrack == "1" || 
       navigator.msDoNotTrack == "1"; 
+1

In realtà, ho ottenuto FF per inviare 'DNT: 0' controllando" comunica ai siti Web che desidero essere tracciati ". FF supporta questo –

+0

@ArsenZahray Interessante! Sembra che l'ultima volta che l'articolo MDN è stato aggiornato sia stato più di un anno fa, quindi molto potrebbe essere cambiato da allora. Anche così, dal momento che stai cercando solo risultati DNT positivi, il mio snippet di codice finale * dovrebbe * funzionare indipendentemente (anche se non l'ho ancora testato). – apsillers

+1

@ArsenZahray Ho appena fatto un rapido test in FF21, e sembra che "Dì ai siti web che voglio essere rintracciato" e "Dì ai siti web che io * non * voglio essere rintracciato" entrambi producono un "sì" "valore, pur lasciando impostato il valore predefinito" send nothing "produce" 'undefined'". Penso che col tempo la correggeranno e "per favore * mi * mi rintraccia" finirà per trasformarsi in un "no". Nel frattempo, probabilmente non è così male trattare tutti i valori "sì" come "non * tracciami", dal momento che le persone che optano per il tracciamento sono piuttosto rare. – apsillers