gpt4 book ai didi

javascript - 使用 Javascript 查找 cookie 的部分名称

转载 作者:行者123 更新时间:2023-12-02 18:29:30 29 4
gpt4 key购买 nike

在我的网站上,我使用 cookie 来显示或隐藏某些内容。根据用户的登录方式将决定他们可以看到哪些内容。即,如果我使用 Facebook 登录,我的网站会查找名为“fbsr_3324”的 cookie。我的问题是每个用户的 cookie 名称的第二部分都会发生变化(fbsr_2889 fbsr_9902 等)。因此,我想知道是否有人可以提供帮助并建议我如何仅检查 cookie 名称的第一部分(即仅查找以 fbsr_ 开头的 cookie 是否存在

这是我当前使用的 Javascript:

function checkCookie() {
contentDiv=document.getElementById("cookieFb");
if (document.cookie.indexOf("fbsr_")!=-1) {
contentDiv.style.display="none";
}
else {
contentDiv.style.display="block";
}
}

最佳答案

如果我有一个包含值'fbsr_haha,gotcha'
的cookie集,那么您当前使用的代码的执行方式就像我使用facebook登录一样也许这是正则表达式的工作:

/^|;\s*fbsr_[0-9]{4}\=[^;]+;/.test(document.cookie);

应该可以解决问题。
表达式解释:

  • ^|;:字符串的开头或分号
  • \s*:后跟零个或多个空格
  • fbsr_[0-9]{4}:匹配 fsbr_ 和任意 4 个数字的序列
  • \=:你可以只写=,但有时你需要转义=(lookarounds),所以最好也转义一次往往还不够
  • [^;]+ 除分号外的任何内容至少一次或多次
  • ;:文字分号

在哪里使用这个表达式:

function checkCookie()
{
contentDiv=document.getElementById("cookieFb");
if (/^|;\s*fbsr_[0-9]{4}\=[^;]+;/.test(document.cookie))
{//facebooker!
contentDiv.style.display="none";
return;//return here, so you can leve the else out
}
contentDiv.style.display="block";
}

嗯,应该可以了。
但是,我无法控制自己,所以如果您更熟悉 JS,并且想要优化一些脚本,请考虑以下内容:

var checkCookie = (function(expr)
{
var contentDiv = document.getElementById('cookieFb');
return function()
{
contentDiv.style.display="block";
if (expr.test(document.cookie))
{
contentDiv.style.display="none";
}
};
}(/^|;\s*fbsr_[0-9]{4}\=[^;]+;/));

这是与您拥有的完全相同的代码的优化版本。 ATM,每次调用时,您的代码都会在 dom 中查询 ID 为 cookieFb 的元素,并且还会创建一个 RegExp 实例。通过使用闭包,您可以查询 DOM 一次,创建一次 RegExp 实例,并在每次调用时重复使用它。
在这种情况下,它的效率更高,并且是微优化,但我无法控制自己;)

关于javascript - 使用 Javascript 查找 cookie 的部分名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17972616/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com