鍍金池/ 問答/C  HTML/ 為什么首次進(jìn)入頁面后輸入了username,刷新頁面或者點(diǎn)擊頁面的button又

為什么首次進(jìn)入頁面后輸入了username,刷新頁面或者點(diǎn)擊頁面的button又提醒輸入username?

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鳥教程(runoob.com)</title>
</head>
<head>
<script>
function setCookie(cname,cvalue,exdays){
    var d = new Date();
    d.setTime(d.getTime()+(exdays*24*60*60*1000));
    var expires = "expires="+d.toGMTString();
    document.cookie = cname+"="+cvalue+"; "+expires;
    console.log(document.cookie);
}
function getCookie(cname){
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for(var i=0; i<ca.length; i++) {
        var c = ca[i].trim();
        if (c.indexOf(name)==0) { return c.substring(name.length,c.length); }
    }
    return "";
}
function checkCookie(){
    var user=getCookie("username");
    if (user!=""){
        alert("歡迎 " + user + " 再次訪問");
    }
    else {
        user = prompt("請輸入你的名字:","");
          if (user!="" && user!=null){
            setCookie("username",user,30);
        }
    }
}
</script>
</head>
    
<body onload="checkCookie()">
    <button type="button" onclick="checkCookie()"></button>
</body>
    
</html>

按照我對這段代碼的理解應(yīng)該是設(shè)置了cookies之后,在30天內(nèi)的有效期內(nèi)都能檢測到username,第一次輸入后,有效期內(nèi)就不應(yīng)該再輸入了。但是為什么會在彈出prompt框讓我再次輸入;

我也在控制臺里打斷點(diǎn)看了代碼的執(zhí)行情況,發(fā)現(xiàn)setCookie的function里的console.log(document.cookie);執(zhí)行出來的結(jié)果為'',按理說進(jìn)入頁面輸入了username之后,username的cookie應(yīng)該存在。。。。。。。。。。。

為什么會這樣啊,小白求指教?實(shí)在是想不明白

補(bǔ)充圖片:
圖片描述

回答
編輯回答
擱淺

你設(shè)置setCookie時(shí)沒定義path,所以會依照當(dāng)前頁面的路徑填值。

function setCookie(cname,cvalue,exdays){
    var d = new Date();
    d.setTime(d.getTime()+(exdays*24*60*60*1000));
    var expires = "expires="+d.toGMTString();
    document.cookie = cname+"="+cvalue+";path=/;"+expires;
    console.log(document.cookie);
}

會出這種現(xiàn)象,比如在codepen.io模擬編輯環(huán)境下,就會發(fā)生這種情況(每次刷新是新的頁面展現(xiàn)給你)。

2017年6月2日 20:35
編輯回答
夢囈

問題在于 本地瀏覽只有firefox支持cookie...你切個服務(wù)器環(huán)境,就好了。。。跟代碼一點(diǎn)關(guān)系都沒有

2018年8月3日 05:44
編輯回答
涼薄

問題所在就是cookie設(shè)置不成功
clipboard.png

2017年9月13日 10:46