Menu
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

JS 教程

JS 主页 JS 简介 JS 哪里可以 JS 输出 JS 语句 JS 语法 JS 注释 JS 变量 JS Let JS Const JS 运算符 JS 算术 JS 赋值 JS 数据类型 JS 函数 JS 对象 JS 对象属性 JS 对象方法 JS 对象显示 JS 对象构造函数 JS 事件 JS 字符串 JS 字符串方法 JS 字符串搜索 JS 字符串模板 JS 数字 JS BigInt JS 数字方法 JS 数字属性 JS 数组 JS 数组方法 JS 数组搜索 JS 数组排序 JS 数组迭代 JS 数组常量 JS 日期 JS 日期格式 JS 日期获取方法 JS 日期设置方法 JS 数学 JS 随机数 JS 布尔值 JS 比较 JS If Else JS Switch JS 循环 For JS 循环 For In JS 循环 For Of JS 循环 While JS Break JS 可迭代对象 JS 集合 JS 集合方法 JS 映射 JS 映射方法 JS Typeof JS 类型转换 JS 解构 JS 位运算 JS RegExp JS 优先级 JS 错误 JS 作用域 JS 提升 JS 严格模式 JS this 关键字 JS 箭头函数 JS 类 JS 模块 JS JSON JS 调试 JS 风格指南 JS 最佳实践 JS 错误 JS 性能 JS 保留字

JS 版本

JS 版本 JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS 2019 JS 2020 JS 2021 JS 2022 JS 2023 JS 2024 JS IE / Edge JS 历史

JS 对象

对象定义 对象原型 对象方法 对象属性 对象获取/设置 对象保护

JS 函数

函数定义 函数参数 函数调用 函数调用 函数应用 函数绑定 函数闭包

JS 类

类简介 类继承 类静态

JS 异步

JS 回调 JS 异步 JS Promise JS 异步/等待

JS HTML DOM

DOM 简介 DOM 方法 DOM 文档 DOM 元素 DOM HTML DOM 表单 DOM CSS DOM 动画 DOM 事件 DOM 事件监听器 DOM 导航 DOM 节点 DOM 集合 DOM 节点列表

JS 浏览器 BOM

JS 窗口 JS 屏幕 JS 位置 JS 历史记录 JS 导航器 JS 弹出警报 JS 定时 JS Cookies

JS Web API

Web API 简介 Web 表单 API Web 历史记录 API Web 存储 API Web 工作线程 API Web Fetch API Web Geolocation API

JS AJAX

AJAX 简介 AJAX XMLHttp AJAX 请求 AJAX 响应 AJAX XML 文件 AJAX PHP AJAX ASP AJAX 数据库 AJAX 应用 AJAX 示例

JS JSON

JSON 简介 JSON 语法 JSON vs XML JSON 数据类型 JSON 解析 JSON 字符串化 JSON 对象 JSON 数组 JSON 服务器 JSON PHP JSON HTML JSON JSONP

JS vs jQuery

jQuery 选择器 jQuery HTML jQuery CSS jQuery DOM

JS 图形

JS 图形 JS 画布 JS Plotly JS Chart.js JS Google Chart JS D3.js

JS 示例

JS 示例 JS HTML DOM JS HTML 输入 JS HTML 对象 JS HTML 事件 JS 浏览器 JS 编辑器 JS 练习 JS 测验 JS 网站 JS 面试准备 JS 集训营 JS 证书

JS 参考

JavaScript 对象 HTML DOM 对象


JavaScript Cookies


Cookies 允许您在网页中存储用户信息。


什么是 Cookies?

Cookies 是数据,存储在您计算机上的小型文本文件中。

当 Web 服务器将网页发送到浏览器时,连接将关闭,服务器会忘记有关用户的所有信息。

Cookies 的发明是为了解决“如何记住有关用户的信息”这一问题。

  • 当用户访问网页时,他的/她的姓名可以存储在 Cookie 中。
  • 下次用户访问页面时,Cookie 会“记住”他的/她的姓名。

Cookies 以键值对的形式保存,例如:

username = John Doe

当浏览器向服务器请求网页时,属于该页面的 Cookies 会添加到请求中。这样服务器就可以获取必要的数据来“记住”有关用户的信息。

如果您的浏览器禁用了本地 Cookies 支持,以下示例将无法正常工作。


使用 JavaScript 创建 Cookie

JavaScript 可以使用 document.cookie 属性创建、读取和删除 Cookies。

使用 JavaScript,可以像这样创建 Cookie:

document.cookie = "username=John Doe";

您还可以添加过期日期(以 UTC 时间表示)。默认情况下,Cookie 在浏览器关闭时会被删除。

document.cookie = "username=John Doe; expires=Thu, 18 Dec 2013 12:00:00 UTC";

使用路径参数,您可以告诉浏览器 Cookie 属于哪个路径。默认情况下,Cookie 属于当前页面。

document.cookie = "username=John Doe; expires=Thu, 18 Dec 2013 12:00:00 UTC; path=/";


使用 JavaScript 读取 Cookie

使用 JavaScript,可以像这样读取 Cookies:

let x = document.cookie;

document.cookie 将返回一个字符串,其中包含所有 Cookies,类似于:cookie1=value; cookie2=value; cookie3=value;


使用 JavaScript 修改 Cookie

使用 JavaScript,您可以像创建 Cookie 一样修改 Cookie:

document.cookie = "username=John Smith; expires=Thu, 18 Dec 2013 12:00:00 UTC; path=/";

旧的 Cookie 会被覆盖。


使用 JavaScript 删除 Cookie

删除 Cookie 非常简单。

删除 Cookie 时,您无需指定 Cookie 值。

只需将 expires 参数设置为过去的时间即可:

document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";

您应该定义 Cookie 路径,以确保删除的是正确的 Cookie。

某些浏览器不允许您删除未指定路径的 Cookie。


Cookie 字符串

document.cookie 属性看起来像一个普通的文本字符串,但实际上并非如此。

即使您将整个 Cookie 字符串写入 document.cookie,再次读取时,您只能看到其键值对。

如果您设置了一个新的 Cookie,旧的 Cookie 不会被覆盖。新的 Cookie 会添加到 document.cookie 中,因此如果您再次读取 document.cookie,您将得到类似于以下内容的结果:

cookie1 = value; cookie2 = value;

     

如果您想查找特定 Cookie 的值,则需要编写一个 JavaScript 函数,该函数在 Cookie 字符串中搜索 Cookie 值。


JavaScript Cookie 示例

在接下来的示例中,我们将创建一个存储访问者姓名的 Cookie。

访问者第一次访问网页时,将被要求填写他们的姓名。然后将姓名存储在 Cookie 中。

访问者下次访问同一页面时,将收到一条欢迎消息。

在本示例中,我们将创建 3 个 JavaScript 函数

  1. 一个函数来设置 Cookie 值
  2. 一个函数来获取 Cookie 值
  3. 一个函数来检查 Cookie 值

设置 Cookie 的函数

首先,我们创建一个 function,它将访问者的姓名存储在 Cookie 变量中

示例

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

示例解释

上面函数的参数是 Cookie 的名称 (cname)、Cookie 的值 (cvalue) 以及 Cookie 过期的天数 (exdays)。

该函数通过将 Cookie 名称、Cookie 值和过期字符串加在一起来设置 Cookie。


获取 Cookie 的函数

然后,我们创建一个 function,它返回指定 Cookie 的值

示例

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

函数解释

将 Cookie 名称作为参数 (cname)。

创建一个变量 (name),其中包含要搜索的文本 (cname + "=")。

解码 Cookie 字符串,以处理包含特殊字符的 Cookie,例如 "$"。

将 document.cookie 按分号分割成一个名为 ca 的数组 (ca = decodedCookie.split(';'))。

循环遍历 ca 数组 (i = 0; i < ca.length; i++),并读出每个值 c = ca[i])。

如果找到 Cookie (c.indexOf(name) == 0),则返回 Cookie 的值 (c.substring(name.length, c.length))。

如果未找到 Cookie,则返回 ""。


检查 Cookie 的函数

最后,我们创建了检查是否设置了 Cookie 的函数。

如果设置了 Cookie,它将显示一个问候语。

如果未设置 Cookie,它将显示一个提示框,询问用户的姓名,并将用户名 Cookie 存储 365 天,方法是调用 setCookie 函数

示例

function checkCookie() {
  let username = getCookie("username");
  if (username != "") {
   alert("欢迎回来 " + username);
  } else {
    username = prompt("请输入您的姓名:", "");
    if (username != "" && username != null) {
      setCookie("username", username, 365);
    }
  }
}

全部合在一起

示例

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

function getCookie(cname) {
  let name = cname + "=";
  let ca = document.cookie.split(';');
  for(let i = 0; i < ca.length; i++) {
    let 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() {
  let user = getCookie("username");
  if (user != "") {
    alert("欢迎回来 " + user);
  } else {
    user = prompt("请输入您的姓名:", "");
    if (user != "" && user != null) {
      setCookie("username", user, 365);
    }
  }
}
自己尝试 »

上面的示例在页面加载时运行 checkCookie() 函数。


×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.