我遇到了要存储Cookie的问题。以下代码可用于预期目的。这只是保存输入的名字和姓氏,用户必须输入joe.smith而不是joe然后smith。 Cookie会保存,这很好,但是在关闭浏览器后,它将删除Cookie。我知道我必须给它一个到期日,但是我似乎无法弄清楚。将到期日添加为永久性的直接方法是什么?
<!DOCTYPE html>
<html>
<script>
function writeCookie(){
if(document.cookie === "")
{
document.cookie = prompt("Enter first.last name: ");
}
}
writeCookie();
var name = document.cookie;
document.write("Your name is: ");
document.write(name);
</script>
</body>
</html>
答案 0 :(得分:1)
如果既没有过期也没有指定max-age,它将在会话结束时过期。
document.cookie
只是一个字符串,您可以像其他字符串一样修改它。
function writeCookie(){
if(document.cookie === ""){
document.cookie = prompt("Enter first.last name: ");
document.cookie = document.cookie + ';max-age=' + (24*60*60*1000) // one day
}
}
writeCookie();
var name = document.cookie;
document.write("Your name is: ");
document.write(name);
参考:https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie
答案 1 :(得分:0)
默认情况下,除非您明确设置了过期时间,否则默认Cookie只会在您打开浏览器时存在。
Cookie具有名称/值对。理想情况下,您的cookie应该采用以下格式:
document.cookie = "username=John Doe; expires=Thu, 18 Dec 2013 12:00:00 UTC";
这里用户名的值为John Doe,有效期为下一部分。您可以使用document.cookie.split(“;”)将字符串分为第一部分和第二部分。然后,对于每个部分,您可以进一步拆分以获取每个值。您可以在此处阅读有关Cookie的操作和阅读的更多信息:https://www.w3schools.com/js/js_cookies.asp
在这种情况下,向现有Cookie添加过期的直接方法是使用类似下面的函数。这里的'exdays'变量是您希望Cookie存在的天数(从当天开始):
function setCookieExpiry(exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = "expires="+ d.toUTCString();
document.cookie = document.cookie "; " + expires;
}
我尚未测试此代码,因此请注释一下它是否无效,我将再次进行查看。