2010-01-30 7 views

risposta

11

Prova questo fuori:

function are_cookies_enabled() 
{ 
    var cookieEnabled = (navigator.cookieEnabled) ? true : false; 

    if (typeof navigator.cookieEnabled == "undefined" && !cookieEnabled) 
    { 
     document.cookie="testcookie"; 
     cookieEnabled = (document.cookie.indexOf("testcookie") != -1) ? true : false; 
    } 
    return (cookieEnabled); 
} 
+0

funzionerà su tutti i browser? –

+0

Dovrebbe, il 2 ° controllo (tentare di creare cookie e vedere se è possibile recuperare il valore che si è tentato di impostare) è pensato per ogni browser. Il primo controllo è solo un controllo più rapido se quella proprietà è memorizzata nel DOM. (supportato nei browser moderni) –

+0

navigator.cookieEnabled restituisce sempre true per IE11, esiste un altro modo per fare lo stesso ?? Lo sto provando da tempo ma non sono in grado di trovare alcuna soluzione – Developer

1

stackoverflow.com utilizza <noscript> tag per mostrare una pagina speciale se JavaScript è disabilitato. Non c'è nulla di equivalente per i cookie che è incorporato nella lingua. La soluzione migliore è probabilmente dare un'occhiata a this thread su come rilevare se i cookie sono disabilitati.

-1

Prima di testare per vedere se i cookie sono abilitati. Se lo sono, si invia un messaggio. Puoi nascondere il messaggio usando i CSS e quindi mostrare dopo il test, ma poi l'utente lo vedrà se non usano il CSS. Si potrebbe avere l'elemento ma con niente dentro, in modo che non venga visualizzato e quindi userHHML interno per inserire il messaggio dopo il test.

Assumendo i cookie sono già stati impostati (o tentato di essere) utilizzare:

var cookieMessage = "You don't have cookies turned on!"; 
    var cookieHTML = document.getElementById("cookiesOff"); 
    function cookieMessage() { 
    if(document.cookie.length == 0) { 
      cookieHTML.innerHTML(cookieMessage); 
      } 
    } 

E poi hanno un elemento HTML come un h3 o p con un id di cookiesOff.

13

Ci deve essere utilizzato un'interfaccia JavaScript navigator.cookieEnabled, ma i browser oggi hanno una molto più ampia gamma di controlli dei cookie di un semplice 'abilitato'/'disabile', tra cui sessione opzioni/persistenti, first-party/di terze parti, impostazioni specifiche del sito e P3P. Quindi annusare questa proprietà è poco utile ora.

No, l'unico modo affidabile per scoprire se è possibile impostare un cookie è provare a impostarlo e vedere se è ancora lì. Un altro problema è che mentre molti browser eseguono il downgrade di un cookie persistente a un cookie di sessione quando i controlli di privacy dell'utente non li consentono, IE no.

Se si tenta di impostare un cookie persistente in IE quando sono disabilitati, il cookie verrà semplicemente gettato sul pavimento. Questo può interferire se si utilizza un semplice controllo dei cookie di sessione, i cookie di individuazione sono abilitati e quindi si tenta di impostare un cookie persistente. E non puoi cavartela cercando di impostare come cookie di sessione e un cookie persistente, perché quando imposti un cookie persistente in IE con i cookie permanenti disabilitati, lo stesso sarà anche elimina il cookie di sessione esistente con lo stesso nome . Oh IE!

Quindi, se è necessario impostare un cookie persistente, ma fare che fare con la sessione in cui persistente non è disponibile, dovreste usare questa prima di scoprire che cosa si è permesso di fare:

// Find out what cookies are supported. Returns: 
// null - no cookies 
// false - only session cookies are allowed 
// true - session cookies and persistent cookies are allowed 
// (though the persistent cookies might not actually be persistent, if the user has set 
// them to expire on browser exit) 
// 
function getCookieSupport() { 
    var persist= true; 
    do { 
     var c= 'gCStest='+Math.floor(Math.random()*100000000); 
     document.cookie= persist? c+';expires=Tue, 01-Jan-2030 00:00:00 GMT' : c; 
     if (document.cookie.indexOf(c)!==-1) { 
      document.cookie= c+';expires=Sat, 01-Jan-2000 00:00:00 GMT'; 
      return persist; 
     } 
    } while (!(persist= !persist)); 
    return null; 
} 
+0

Potrebbe aiutare qualcuno: ho usato questa funzione per mostrare solo un messaggio di dialogo # jquery (una volta) ai browser che supportano i cookie persistenti. Dopo aver controllato per il supporto, faccio un document.write della finestra di dialogo div, quindi imposta un cookie che php cerca così il popup della finestra di dialogo non infastidisce ripetutamente le persone. –

+0

qualcuno ha una fonte per un potenziale miglioramento di navigator.cookieEnabled dal 2010? – Bombinosh

Problemi correlati