Home  >  Article  >  Web Front-end  >  How to Read Cookies in JavaScript: Which Solution is the Most Efficient and Cross-Browser Compatible?

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

Patricia Arquette
Patricia ArquetteOriginal
2024-11-08 03:17:02124browse

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

Reading Cookies in JavaScript: Efficient and Cross-Browser Compatible Solution

When working with stand-alone JavaScript scripts, it's crucial to optimize code for size and reliability. A common task is reading cookies, which can be achieved using various methods. However, finding the shortest and most efficient solution can be challenging.

quirksmode.org's readCookie() Function

The QuirksMode.org readCookie() method is a popular choice but has limitations in terms of size and aesthetics.

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

jQuery.cookie's read_cookie() Function

jQuery.cookie uses a more concise method that is also efficient:

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

Optimized Solution: getCookieValue() Function

However, a shorter, more reliable, and more performant solution is available:

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

This function utilizes a regular expression to extract the value associated with the provided cookie name. It is faster and more concise than previous methods, as demonstrated in benchmarks:

https://jsben.ch/AhMN6

Notes on Approach

This regex method not only achieves the shortest function but also addresses potential inconsistencies in the document.cookie string. The official RFC 2109 indicates that whitespace after the semicolon is optional, and this approach accounts for that. It also handles whitespace before and after the equals sign, ensuring reliability in parsing cookie values.

The above is the detailed content of How to Read Cookies in JavaScript: Which Solution is the Most Efficient and Cross-Browser Compatible?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn