J'ai une application Web basée sur jQuery. Mon exigence est assez simple: je veux utiliser jQuery pour savoir si l'utilisateur a activé ou désactivé les cookies dans son navigateur Web. Je suis conscient qu'il existe un plugin disponible qui peut être utilisé pour créer/récupérer/supprimer/mettre à jour un cookie. Mais y a-t-il un moyen pour jQuery de détecter les paramètres de l'agent utilisateur?
Vous n'avez pas besoin de jQuery pour cela, vous pouvez utiliser Javascript Javascript:
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);
}
Internet Explorer (version 10, au moins) renvoie toujours la valeur true pour navigator.cookieEnabled
. Voici une méthode pour contourner ce problème:
function areCookiesEnabled() {
var cookieEnabled = navigator.cookieEnabled;
// When cookieEnabled flag is present and false then cookies are disabled.
if (cookieEnabled === false) {
return false;
}
// try to set a test cookie if we can't see any cookies and we're using
// either a browser that doesn't support navigator.cookieEnabled
// or IE (which always returns true for navigator.cookieEnabled)
if (!document.cookie && (cookieEnabled === null || /*@cc_on!@*/false))
{
document.cookie = "testcookie=1";
if (!document.cookie) {
return false;
} else {
document.cookie = "testcookie=; expires=" + new Date(0).toUTCString();
}
}
return true;
}
Le moyen le plus simple consiste à vérifier la propriété de la variable navigator
qui contient les informations du navigateur. Référence
Vous pouvez utiliser navigator.cookieEnabled === true
pour détecter la prise en charge du cookie par le navigateur.
J'aime cette fonction 1 liner:
function cookiesEnabled() {
return $.cookie('check', 'valid', { expires: 1 }) && $.cookie('check') == 'valid';
}
Pourquoi testez-vous avec la propriété cookieEnabled
? essayez simplement de créer un cookie et vérifiez si c'est fait. Et si les cookies fonctionnent, supprimez le cookie créé par le test.
function are_cookies_enabled()
{
document.cookie="testcookie=valid";
cookieEnabled = (document.cookie.indexOf("testcookie") != -1) ? true : false;
if(cookieEnabled){
document.cookie = "testcookie=; expires=Thu, 01 Jan 1970 00:00:00 UTC;";
}
return cookieEnabled;
}