2010-01-30 13 views

Respuesta

11

Trate de hacer esto:

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

¿funcionará en cada navegador? –

+0

Debería, el segundo control (intentar crear una cookie y ver si puede recuperar el valor que intentó configurar) para cada navegador. El primer cheque es solo un control más rápido si esa propiedad está almacenada en el DOM. (compatible con los navegadores modernos) –

+0

navigator.cookieEnabled siempre devuelve verdadero para IE11, ¿hay alguna otra manera de hacer lo mismo? Estoy intentando esto por algún tiempo pero no he podido encontrar ninguna solución. – Developer

1

stackoverflow.com utiliza <noscript> etiquetas para mostrar una página especial si javascript está deshabilitado. No hay nada equivalente para las cookies integradas en el lenguaje. Su mejor opción es, probablemente, echarle un vistazo al this thread para saber cómo detectar si las cookies están deshabilitadas.

-1

Primero prueba para ver si las cookies están habilitadas. Si lo son, sacas un mensaje. Puede ocultar el mensaje usando CSS y luego mostrarlo después de la prueba, pero luego el usuario lo verá si no usa CSS. Podría tener el elemento pero sin nada dentro, para que no se muestre y luego el usuario innerHTML para ingresar el mensaje después de la prueba.

galletas Suponiendo que ya se han establecido (o intento de ser) utilizar:

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

Y luego tener un elemento HTML como un h3 o p con un id de cookiesOff.

13

Hay que solía ser un navigator.cookieEnabled interfaz de JavaScript, pero hoy en día los navegadores tienen una mucho más amplia gama de controles de galletas que simplemente 'activar'/'desactivado', incluyendo opciones de sesión/persistente, primera parte/de terceros, configuración específica del sitio y P3P. Así que olfatear esta propiedad es de poca utilidad ahora.

No, la única manera confiable de saber si puede establecer una cookie es intentar establecerla y ver si aún está allí. Otro inconveniente es que, si bien muchos navegadores degradan una cookie persistente a una cookie de sesión cuando los controles de privacidad del usuario no los permiten, IE no lo hará.

Si intenta establecer una cookie persistente en IE cuando están deshabilitadas, la cookie simplemente se lanzará a la palabra. Esto puede atraparlo si usa un verificador de cookies de sesión simple, busca las cookies habilitadas y luego intenta establecer una cookie persistente. Y no puede salirse con la suya tratando de establecer como una cookie de sesión y una cookie persistente, porque cuando establece una cookie persistente en IE con cookies persistentes desactivadas, incluso eliminará la cookie de sesión existente del mismo nombre . Oh IE!

Así que si es necesario configurar una cookie persistente, pero que ver con la sesión en la que la persistencia no está disponible, usted tiene que utilizar este primero para averiguar lo que le permiten hacer:

// 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

Podría ayudar a alguien: utilicé esta función para mostrar solo un mensaje de diálogo # de jquery (una vez) a los navegadores que admiten cookies persistentes. Después de verificar el soporte, hago un documento. Escribo el diálogo div, luego establezco una cookie que php busca para que el diálogo emergente no moleste repetidamente a las personas. –

+0

Alguien tiene una fuente para una mejora potencial de navigator.cookieEnabled desde 2010? – Bombinosh

Cuestiones relacionadas