首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在JavaScript中按名称读取cookie的最短函数是什么?

在JavaScript中按名称读取cookie的最短函数是什么?
EN

Stack Overflow用户
提问于 2018-01-18 08:19:47
回答 2查看 0关注 0票数 0

在JavaScript中读取cookie的最短、准确和跨浏览器兼容方法是什么?

通常,在构建独立脚本时,我发现自己添加了一个用于读取cookie的函数,并且通常返回到QuirksMode.orgreadCookie()

代码语言:javascript
复制
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使用这样的东西(修改,165个字节,125个缩微):

代码语言:javascript
复制
function read_cookie(key)
{
    var result;
    return (result = new RegExp('(?:^|; )' + encodeURIComponent(key) + '=([^;]*)').exec(document.cookie)) ? (result[1]) : null;
}
EN

回答 2

Stack Overflow用户

发布于 2018-01-18 17:00:52

这将只会打一次document.cookie。随后的每个请求都将立即生效。

代码语言:javascript
复制
(function(){
    var cookies;

    function readCookie(name,c,C,i){
        if(cookies){ return cookies[name]; }

        c = document.cookie.split('; ');
        cookies = {};

        for(i=c.length-1; i>=0; i--){
           C = c[i].split('=');
           cookies[C[0]] = C[1];
        }

        return cookies[name];
    }

    window.readCookie = readCookie; // or expose it however you want
})();

恐怕真的没有比这个通用逻辑更快的方法了,除非你可以自由使用.forEach

你自己的例子稍微压缩到120 bytes

代码语言:javascript
复制
function read_cookie(k,r){return(r=RegExp('(^|; )'+encodeURIComponent(k)+'=([^;]*)').exec(document.cookie))?r[2]:null;}

更简单的是:

代码语言:javascript
复制
function C(k){return(document.cookie.match('(^|; )'+k+'=([^;]*)')||0)[2]}
票数 0
EN

Stack Overflow用户

发布于 2018-01-18 17:55:14

比目前投票最好的答案更短、更可靠和更有表现力:

代码语言:javascript
复制
function getCookieValue(a) {
    var b = document.cookie.match('(^|;)\\s*' + a + '\\s*=\\s*([^;]+)');
    return b ? b.pop() : '';
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100007171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档