Javascript - 缓存和 cookie 问题
Javascript - Issue with caching and cookies
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" .
是否有解决此缓存问题的方法?
重新加载方法接受一个指示强制缓存刷新的布尔标志。所以尝试:
document.reload(true);
JS中的不相等比较是!=
,所以
getCookie("lang") != "FR"
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.
$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" .
是否有解决此缓存问题的方法?
重新加载方法接受一个指示强制缓存刷新的布尔标志。所以尝试:
document.reload(true);
JS中的不相等比较是!=
,所以
getCookie("lang") != "FR"