带有提示的Cookie

时间:2019-10-04 14:10:09

标签: javascript

我遇到了要存储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>

2 个答案:

答案 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;
}

我尚未测试此代码,因此请注释一下它是否无效,我将再次进行查看。