ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript で Cookie を読み取る方法: 最も効率的でブラウザ間互換性のあるソリューションはどれですか?

JavaScript で Cookie を読み取る方法: 最も効率的でブラウザ間互換性のあるソリューションはどれですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-08 03:17:02122ブラウズ

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

JavaScript での Cookie の読み取り: 効率的でクロスブラウザー互換のソリューション

スタンドアロン JavaScript スクリプトを使用する場合、コードを最適化することが重要ですサイズと信頼性のために。一般的なタスクは Cookie の読み取りであり、これはさまざまな方法を使用して実現できます。ただし、最短かつ最も効率的な解決策を見つけるのは難しい場合があります。

quirksmode.org の readCookie() 関数

QuirksMode.org の readCookie() メソッドは一般的な選択肢です。ただし、サイズと見た目の点で制限があります。

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 の read_cookie() 関数

jQuery.cookie は、効率的でもあるより簡潔なメソッドを使用します。 :

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

最適化されたソリューション: getCookieValue() 関数

ただし、より短く、より信頼性が高く、よりパフォーマンスの高いソリューションが利用可能です:

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

この関数は正規表現を利用して、指定された Cookie 名に関連付けられた値を抽出します。ベンチマークで実証されているように、以前の方法よりも高速かつ簡潔です:

https://jsben.ch/AhMN6

アプローチに関する注意点

この正規表現メソッドは最短の関数を実現するだけでなく、document.cookie 文字列内の潜在的な不一致にも対処します。公式 RFC 2109 では、セミコロンの後の空白はオプションであることが示されており、このアプローチはそれを考慮しています。また、等号の前後の空白も処理し、Cookie 値の解析の信頼性を確保します。

以上がJavaScript で Cookie を読み取る方法: 最も効率的でブラウザ間互換性のあるソリューションはどれですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。