我在缓存页面上的 JavaScript 和 Cookie 方面遇到了相当令人沮丧的问题。
我得到了以下 JS 代码:
function getCookie(cname) {
var name = cname + "=";
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);
if (c.indexOf(name) == 0) return c.substring(name.length,c.length);
}
return "";
}
if (!getCookie("lang") == "{{Lang}}"){
document.reload();
}
{{Lang}}
在 PHP 后端被替换为完全相同的 cookie。
$template = str_replace("{{Lang}}", $lang, $template);
但这并不真正相关,因为该部分按预期工作。
问题在于当用户访问缓存页面时。
前面提到的JS就变成了
function getCookie(cname) {
var name = cname + "=";
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);
if (c.indexOf(name) == 0) return c.substring(name.length,c.length);
}
return "";
}
if (!getCookie("lang") == "FR"){
document.reload();
}
问题是,即使 Chrome 开发工具非常清楚地表明 cookie lang
设置为“EN”,而不是“FR”,页面也不会刷新。
有办法解决这个缓存问题吗?
最佳答案
JS中的不相等比较是!=
,所以
getCookie("lang") != "FR"
关于Javascript - 缓存和 cookie 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29526278/