web-dev-qa-db-fra.com

jQuery détectant les cookies activés

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?

20
user1044304

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);
}

http://sveinbjorn.org/cookiecheck

39
Sarfraz

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;
}
6
Josh Schultz

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.

4
steveyang

J'aime cette fonction 1 liner:

function cookiesEnabled() {
    return $.cookie('check', 'valid', { expires: 1 }) && $.cookie('check') == 'valid';
}
2
wayofthefuture

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;
    }
0
Mohamed Allal