Javascript navigateur.cookieEnabled la Compatibilité du Navigateur
Comment bien pris en charge est navigator.cookieEnabled
? Je peux compter sur elle pour tous les navigateurs?
double possible de Comment faire pour détecter que le JavaScript et/ou des Cookies sont désactivés ?
Je ne le pense pas. Je suis conscient de la notion de tenter un cookie juste pour voir si ça marche, mais je voulais voir comment fiable cookieEnabled est. Pour l'application que je suis en train de travailler sur, la plus petite, que je peux garder le code, le mieux.
Je ne le pense pas. Je suis conscient de la notion de tenter un cookie juste pour voir si ça marche, mais je voulais voir comment fiable cookieEnabled est. Pour l'application que je suis en train de travailler sur, la plus petite, que je peux garder le code, le mieux.
OriginalL'auteur dtbarne | 2011-05-25
Vous devez vous connecter pour publier un commentaire.
Je sais qu'il est présent dans au moins IE 6 et plus tard, Firefox 1 et plus tard, et Dottoro signale qu'il est pris en charge par tous les principaux navigateurs. Cependant, il ne fait partie d'aucune spécification DOM et, par conséquent, n'est pas disponible ou mis en œuvre correctement par tous les navigateurs (par exemple, les navigateurs mobiles avec limitée DOM implémentations).
Comme certains l'ont découvert, c'est à dire renvoie la valeur true pour
navigator.cookieEnabled
même si les cookies sont bloqués pour le site actuel. Cela signifie que vous ne peut actuellement compter sur la propriété à tout et vous devriez éviter complètement.Complète de la croix-navigateur, le support des cookies vérifiez, vous pouvez aller avec quelque chose comme ceci:
Démo: http://codetester.org/31011785
Ce sera le retour de
false
dans les navigateurs qui ont désactivé les cookies ou ne prennent pas en charge le DOM niveau 2 propriétédocument.cookie
, qui est à peu près aussi loin que vous pouvez aller en JS.navigator.cookieEnabled
.ouais, comme je l'ai dit
cookieEnabled
ne fait pas partie de la spécification, de sorte que le code dans ma réponse est juste pour le super-paranoïde 🙂Salut Andy, pouvez-vous nous expliquer les 2e et 3e clauses du conditionnel?
En fait, il y a seulement deux clauses du conditionnel. Mon code de mise en forme type de déguisements parce que je suis un peu obsessionnelle quand il s'agit de petits blocs de code à l'affichage des barres de défilement horizontale.
(document.cookie.length > 0 || (document.cookie = "test").indexOf.call(document.cookie, "test") > -1)
est une déclaration distincte qui, 1) vérifie la présence d'un cookie de propriété existe et affirme ensuite que, 2a) de sa longueur non nulle (un cookie existe déjà); ou 2b), nous pouvons définir un cookie et vérifiez qu'il a été défini.oui, le code que j'ai écrit n'est qu', mais le code que vous avez écrit n'est pas 🙂 Votre code vérifie si la chaîne "test" contient la chaîne "test". Il pourrait être mieux si je vous montre un exemple des différences dans un contexte similaire: jsfiddle.net/ctRcB
OriginalL'auteur Andy E
Dans un test rapide tout à l'heure (à l'aide de IE9), il semble que le navigateur.cookieEnabled renvoie toujours vrai lorsque le navigateur bloque les cookies pour ce site.
En d'autres termes, les cookies sont activés mais pas pour cette page que vous êtes sur.
Par conséquent, vous devez faire des tests pour savoir si les cookies de travailler vraiment quand vous les définissez. Le code correct doit être (modifié à partir de Andy E):
Il n'y a pas vraiment d'intérêt dans le contrôle de navigateur.cookieEnabled.
There is really no point in checking navigator.cookieEnabled.
Peut confirmer
navigator.cookieEnabled
retourne true en cas de IE11, quand les cookies sont bloqués.OriginalL'auteur mike nelson
J'aime ce 1 liner fonction:
LOL, roger votre droite. Je pense qu'avec AJAX étant l'avenir, jquery finira par être la norme. Pouvez-vous penser à tous les problèmes de la croix-compatibilité des sage avec ma solution? Merci
Nope, semble solide.
Même en 2014, jQuery a été phasing out... 🙁
OriginalL'auteur wayofthefuture