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

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

Patricia Arquette
リリース: 2024-11-08 03:17:02
オリジナル
215 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート