在JavaScript中读取Cookie的最短,准确且跨浏览器兼容的方法是什么?
很多时候,在构建独立脚本时(我没有任何外部依赖项),我发现自己添加了一个读取cookie的函数,并且通常回退到QuirksMode.orgreadCookie()
方法(280个字节,最小为216个)。
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):
function read_cookie(key)
{
var result;
return (result = new RegExp('(?:^|; )' + encodeURIComponent(key) + '=([^;]*)').exec(document.cookie)) ? (result[1]) : null;
}
请注意, 这不是一场“ Code Golf”竞赛:我有理由减少我的readCookie函数的大小,并确保我的解决方案有效。
比目前最受好评的答案更简短,更可靠,更高效:
function getCookieValue(a) {
var b = document.cookie.match('(^|[^;]+)\\s*' + a + '\\s*=\\s*([^;]+)');
return b ? b.pop() : '';
}
(编辑:'(^|;)\\s*'
=> '(^|[^;]+)\\s*'
,以前仅适用于第一个cookie)
有关方法的一些注意事项:
regex方法不仅在大多数浏览器中最快,而且功能最短。此外,应该指出的是,根据正式规范(RFC2109),在document.cookie中用于分隔cookie的分号后的空格是可选的,并且可以提出不应依赖它的论点。另外,在等号(=)之前和之后都允许使用空格,并且可以提出这样的论点,即应将这一潜在的空格纳入任何可靠的document.cookie解析器。上面的正则表达式说明了上述两个空白条件。
现在,我有两个名称为和名称为的cookie。 我想让这个getter只从义务cookie中获取值。 我该怎么做?因此将数据拆分为单独的值并将其放入数组中。
本文向大家介绍什么是JavaScript中的匿名函数?,包括了什么是JavaScript中的匿名函数?的使用技巧和注意事项,需要的朋友参考一下 函数表达式与函数声明相似,并且具有与函数声明相同的语法。可以定义“命名”函数表达式(例如,在调用堆栈中可能使用表达式的名称)或“匿名”函数表达式。 匿名函数表达式的示例(未使用名称)- 可以使用引用该函数的变量名来调用此函数- 总之,匿名函数是未存储但与变
问题内容: 如何删除名称为特定的Cookie ? 不应以下内容: 然后: 杀死饼干? 问题答案: 您应该定义cookie所在的路径,以确保删除正确的cookie。 如果未指定路径,浏览器将相对于您当前所在的页面设置一个cookie,因此,如果您在其他页面上删除该cookie时,另一个cookie继续存在。 根据@Evan Morrison的评论进行编辑。 请注意,在某些情况下,要标识正确的cook
本文向大家介绍JavaScript 获取函数对象的名称,包括了JavaScript 获取函数对象的名称的使用技巧和注意事项,需要的朋友参考一下 示例 6 ES6: 关于MDN的说明。自2015年起,可以在nodejs和除IE之外的所有主要浏览器中使用。 5 ES5: 如果您有对该功能的引用,则可以执行以下操作:
嗨,我必须读取一个xml文件,在代码的一部分中有一些字段标签,名称如示例中所述 我只想读取名为“link\u pdf”的字段 如果我用这个密码 我可以读取值,但在某些情况下这不是一个好的工作,如何通过字段名访问值? 不是工作
问题内容: 我有这个: 我想要这个: 问题答案: 更新 正如其他人提到的那样,这不是最快也不推荐的解决方案。 您可以使用eval: