我遇到了Cookies问题

时间:2018-03-23 13:59:37

标签: javascript html

以下HTML文件用于设置cookie,然后在下次加载文件时找到cookie。它适用于浏览器FireFox,但不适用于Chrome。这是在Windows 10计算机上完成的。

我的一个朋友在他的Mac上为我累了,这就是他发现的:

点击关闭,然后在Chrome中再次显示文字中没有“用户名”。在Safari中,消息是“getCookie withusername =”,由破折号分隔的4个5hex数字“helpSession = 914438-1284431863267”。

点击关闭按钮,它会输入一个正确的方框来输入名称,并在更大的方框右侧显示一个“取消”可点击区域,然后是一个OK可点击区域。

输入“测试”并点击“确定”。 Chrome报告说它阻止了Cookie。 Safari报告错误,但下次第二条消息是“getCookie withusername = test; helpSession = 914438-1284431863267”。第三个OK给了“欢迎回来测试”

我想知道我做错了什么。

鲍勃

以下是代码:

<!DOCTYPE html>
<html>
<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();
    alert( "expires=" + expires );
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}

function getCookie(cname) {
    var name = cname + "=";
    alert( "getCookie called" + document.cookie );
    var decodedCookie = decodeURIComponent(document.cookie);
    var ca = decodedCookie.split(';');
    for(var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') {
            c = c.substring(1);
        }
        if (c.indexOf(name) == 0) {
            return c.substring(name.length, c.length);
        }
    }
    return "";
}

function checkCookie() {
    var user=getCookie("username");
    if (user != "") {
        alert("Welcome again " + user);
    } else {
       user = prompt("Please enter your name:","");
       if (user != "" && user != null) {
           setCookie("username", user, 30);
       }
    }
}

</script>
</head>
<body onload="checkCookie()">
</body>
</html>

0 个答案:

没有答案