网站通过cookie实现夜间模式——cookie mode字段值为sun时调整背景为白色,night时调整为黑色。

在调试中发现如果在下级目录设置mode值为night,回到上级目录后仍然显示白色背景,手动点击切换模式按钮后cookie中出现一个路径不同的mode字段。

原因是设置cookie时没有指定路径path,原setCookie代码:

function setCookie(name, value) {
    var Days = 1;
    var exp = new Date();
    exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000);
    document.cookie = name + "=" + value + ";expires=" + exp.toGMTString();
}

更正后:

function setCookie(name, value) {
    var Days = 1;
    var exp = new Date();
    exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000);
    document.cookie = name + "=" + value + ";expires=" + exp.toGMTString() + ";path=/";
}

这样指定路径后,在不同目录下设置cookie,其路径都为根目录。不管跳转到任何目录,读取的都为同一个cookie。

仅作记录。

窗口打开后加载JS读取记录了夜间模式设置的cookie,设置网页页面颜色。

点击按钮后更改夜间/日间效果。

function getCookie(name) {
    var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
    if(arr=document.cookie.match(reg))
        return arr[2];
    else 
        return null;
}

function setCookie(name, value) {
    var Days = 1;
    var exp = new Date();
    exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000);
    document.cookie = name + "=" + value + ";expires=" + exp.toGMTString();
}