Maison >interface Web >js tutoriel >Comment lire les cookies en JavaScript : quelle solution est la plus efficace et compatible avec tous les navigateurs ?

Comment lire les cookies en JavaScript : quelle solution est la plus efficace et compatible avec tous les navigateurs ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-08 03:17:02192parcourir

How to Read Cookies in JavaScript: Which Solution is the Most Efficient and Cross-Browser Compatible?

Lecture des cookies en JavaScript : solution efficace et compatible avec plusieurs navigateurs

Lorsque vous travaillez avec des scripts JavaScript autonomes, il est crucial d'optimiser le code pour la taille et la fiabilité. Une tâche courante consiste à lire les cookies, ce qui peut être réalisé par différentes méthodes. Cependant, trouver la solution la plus courte et la plus efficace peut être difficile.

Fonction readCookie() de Quirksmode.org

La méthode readCookie() de QuirksMode.org est un choix populaire mais a des limites en termes de taille et d'esthétique.

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}

Fonction read_cookie() de jQuery.cookie

jQuery.cookie utilise une méthode plus concise qui est également efficace :

function read_cookie(key)
{
    var result;
    return (result = new RegExp('(?:^|; )' + encodeURIComponent(key) + '=([^;]*)').exec(document.cookie)) ? (result[1]) : null;
}

Solution optimisée : fonction getCookieValue()

Cependant, une solution plus courte, plus fiable et plus performante est disponible :

const getCookieValue = (name) => (
  document.cookie.match('(^|;)\s*' + name + '\s*=\s*([^;]+)')?.pop() || ''
)

Cette fonction utilise une expression régulière pour extraire la valeur associée au nom du cookie fourni. Elle est plus rapide et plus concise que les méthodes précédentes, comme le démontrent les benchmarks :

https://jsben.ch/AhMN6

Notes sur l'approche

Cette méthode regex permet non seulement d'obtenir la fonction la plus courte, mais résout également les incohérences potentielles dans la chaîne document.cookie. La RFC 2109 officielle indique que les espaces après le point-virgule sont facultatifs, et cette approche en tient compte. Il gère également les espaces avant et après le signe égal, garantissant ainsi la fiabilité de l'analyse des valeurs des cookies.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn