Javascript 页面重新加载时未保存Cookie
我有这个密码Javascript 页面重新加载时未保存Cookie,javascript,jquery,cookies,timezone,timezone-offset,Javascript,Jquery,Cookies,Timezone,Timezone Offset,我有这个密码 $(document).ready(function () { var d = new Date(); var newMinutes = d.getTimezoneOffset(); var storedMinutes = getCookieValue("tzom"); if (newMinutes != storedMinutes) { setCookie("tzom", newMinutes); alert(
$(document).ready(function () {
var d = new Date();
var newMinutes = d.getTimezoneOffset();
var storedMinutes = getCookieValue("tzom");
if (newMinutes != storedMinutes) {
setCookie("tzom", newMinutes);
alert("new" + newMinutes);
alert("stored" + storedMinutes);
document.location.reload(true);
}
});
这里我要做的是检查cookie中的时区值,看看它是否与用户设置的当前时区不同。如果I用户来到该站点并更改其时区,然后转到另一个页面,就会发生这种情况。如果存在差异,则我使用新值设置cookie并重新加载页面。问题是,当我重新加载页面时,它仍然显示时区之间存在差异,因此页面在无限循环中重新加载。如果我能在这个无限循环中点击另一个页面,那么循环就停止了
事实上,我注意到,通过取出重新加载,在更改我的时区后,如果我单击一个页面,则时区会被报告为不同,如果我单击第二个页面,则时区仍会被报告为不同,只有在第三个页面上单击,才不会报告Cookie不同
这里怎么了
编辑
剩下的代码在这里
function getCookieValue(c_name) {
var c_value = document.cookie;
var c_start = c_value.indexOf(" " + c_name + "=");
if (c_start == -1) {
c_start = c_value.indexOf(c_name + "=");
}
if (c_start == -1) {
c_value = null;
}
else {
c_start = c_value.indexOf("=", c_start) + 1;
var c_end = c_value.indexOf(";", c_start);
if (c_end == -1) {
c_end = c_value.length;
}
c_value = unescape(c_value.substring(c_start, c_end));
}
return c_value;
}
function setCookie(c_name, value, exdays) {
var exdate = new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value = escape(value) + ((exdays == null) ? "" : "; expires=" + exdate.toUTCString());
document.cookie = c_name + "=" + c_value;
}
setCookie函数接受3个参数,而不是2个 尝试将您的代码更改为:
if (newMinutes != storedMinutes) {
setCookie("tzom", newMinutes,365); //cookie will persist for 365 days
alert("new" + newMinutes);
alert("stored" + storedMinutes);
setTimeout("document.location.reload(true)",1000);
}
这不应该有任何关系。最后一个参数允许为null,如果仔细观察,将在方法中处理该参数。但为了排除这种情况,我将尝试使用它。最后一个参数可以为null。。。但是如果它为空,那么cookie将立即过期…我明白了,我如何将它设置为无限。所有cookie都会过期。。。你能做的就是把过期日期设为一个遥远的日期。。。(例如5年以上)页面是否仍在无休止的循环中刷新?