我有这个代码
$(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 中的时区值,看看它是否与用户设置的当前时区不同。如果我的用户访问该站点并更改他们的时区然后转到另一个页面,就会发生这种情况。如果有差异,那么我使用新值设置 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;
}