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年以上)页面是否仍在无休止的循环中刷新?