gpt4 book ai didi

javascript - 设置 cookie 会导致意外行为

转载 作者:行者123 更新时间:2023-11-29 15:50:24 29 4
gpt4 key购买 nike


我有一个多语言网站,可以在德语和英语之间切换。我想将选择的语言存储在cookie中,以便访问者下次访问该网站时不必一遍又一遍地切换到他喜欢的语言。不幸的是,我对此有一种奇怪的行为。它看起来像这样:

我有一个用于切换语言的链接 (onclick)。这个函数看起来像这样:

function storeLanguage(lang)  {
/*deletes the cookie? */
document.cookie = "MYCOOKIE=; expires=Thu, 01-Jan-70 00:00:01 GMT;";
var ablauf = new Date();
var expTime = ablauf.getTime() + (60 * 24 * 60 * 60 * 1000); //Cookie for 60 days
ablauf.setTime(expTime);

if (lang == 'en') {
document.cookie = "MYCOOKIE=EN; expires=" + ablauf.toGMTString() + ";";
}
else {
document.cookie = "MYCOOKIE=DE; expires=" + ablauf.toGMTString() + ";";
}
}

Firebug 说它跳转到正确的 IF 分支,所以当我单击“德语”时,这部分将执行“MYCOOKIE=DE”,否则为英语分支。这看起来不错。但是当我到达我网站的任何网页时(为了测试我选择了索引站点)并执行

alert(document.cookie);

我在德语网页“MYCOOKIE=EN”中突然得到结果,虽然它应该是“MYCOOKIE=DE”,因为该函数跳入了正确的 IF 分支(else 分支)。当我切换到英语语言时,我在英文网页“MYCOOKIE=DE; MYCOOKIE=EN”上得到结果。所以突然有两个同名的 cookies 。所以 cookie 的值不仅被反转,也没有被正确删除,而是完全废话。任何人都可以解释我的代码中导致这种行为的错误吗?

最佳答案

确保您也正确设置了 cookie 的路径。例如,如果您网站的语言嵌入在 URL 中(即:http://yoursite.com/en/index.html),您可能将 cookie 设置为仅在路径包含“/en”时才有效。完整的 cookie 设置语法如下所示:

document.cookie = 'mycookie=somevalue; expires=Thu, 2 Aug 2001 20:47:11 UTC; path=/'

关于javascript - 设置 cookie 会导致意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6191459/

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