热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Cookie居然可以这样整了

javascript栏目用JS操作Cookie其实是很麻烦的,并不存在一个简单的API能让我们获取或者设置Cookie。唯一一个操作Cookie的API是document.cookie,但是这句代码使用起来很难受..

Javascript栏目介绍COOKIE的不一样用法。

用 JS 操作 COOKIE 其实是很麻烦的,并不存在一个简单的 API 能让我们获取或者设置 COOKIE。

唯一一个操作 COOKIE 的 API 是 document.COOKIE,但是这句代码使用起来很难受。如果说我们想要获取一个需要的 COOKIE,可能得先写这么一个 utils 函数:

function getCOOKIE(name) {  const value = `; ${document.COOKIE}`;  const parts = value.split(`; ${name}=`);  if (parts.length === 2) return parts.pop().split(';').shift();
} 

但是在 Chrome 87 版本中我们无需再引入这样的代码了,取而代之的是新的 API:COOKIEStore。这是一个异步的 API,可以很方便地获取设置以及监听 COOKIE 的改变。

如果你想下载 beta 版本的 Chrome,可以在 此链接 中获取。

以下是新内容的介绍。

获取 COOKIE

刚才在上文中我们已经了解到在之前获取一个需要的 COOKIE 是有多麻烦,如今我们只需一句话就可以获取想要的内容了。

设置 COOKIE

在之前我们如果需要设置 COOKIE 的话,应该会写以下类似的代码,还是在操作 document.COOKIE

const setCOOKIE = (name, value, days = 7, path = '/') => {  const expires = new Date(Date.now() + days * 864e5).toUTCString()  document.COOKIE = name + '=' + encodeURIComponent(value) + '; expires=' + expires + '; path=' + path
} 

现在我们可以通过 COOKIEStore.set 来很方便的设置 COOKIE 了:

set 函数支持两种签名,前者可以设置所有 COOKIE 上的内容,后者就是 key-value 的形式。

删除 COOKIE

说完获取和删除 COOKIE,那么相应的删除操作肯定也是不能少的。

在这之前如果你想删除一个 COOKIE,那么需要把这个 COOKIE 的过期时间设置在过去,过期了自然而然就失效了。

var delete_COOKIE = function(name) {    document.COOKIE = name + '=;expires=Thu, 01 Jan 1970 00:00:01 GMT;';
}; 

看起来很奇怪,想删除一个 COOKIE 不是把字段删了,而是把它过期。现在我们有了新的 API 就不需这样做了:

同样的,delete API 也有两个函数签名,单纯字符串的时候等同于需要删除 COOKIE 的 name,传个对象时签名略有些与之前不同,需要注意签名中可选属性都是有默认值的:

dictionary COOKIEStoreDeleteOptions {
  required USVString name;
  USVString? domain = null;
  USVString path = "/";
}; 

监听 COOKIE 的改变

这个功能应该是之前没有的,如今可以通过新的 API 监听 COOKIE 的改变及删除。

当我们设置或者删除 COOKIE 时对应的事件就会抛出我们所改变的内容。

最后

以上就是本文的内容,该链接是 COOKIEStore 的文档,有兴趣的读者可以了解下。

前端前沿观察者系列主题为关注前端方向的新 API、规范、技术等,虽然我们短期内可能享受不到这些 API 带来的好处,但是总归有一天或者说 polyfill 能让我们用到这些东西。

相关免费学习推荐:Javascript(视频)

以上就是COOKIE 居然可以这样整了的详细内容,更多请关注 第一PHP社区 其它相关文章!


推荐阅读
  • 深入理解:AJAX学习指南
    本文详细探讨了AJAX的基本概念、工作原理及其在现代Web开发中的应用,旨在为初学者提供全面的学习资料。 ... [详细]
  • 阿里云 Aliplayer高级功能介绍(八):安全播放
    如何保障视频内容的安全,不被盗链、非法下载和传播,阿里云视频点播已经有一套完善的机 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • 深入解析HTML5字符集属性:charset与defaultCharset
    本文将详细介绍HTML5中新增的字符集属性charset和defaultCharset,帮助开发者更好地理解和应用这些属性,以确保网页在不同环境下的正确显示。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
  • 在Eclipse中提升开发效率,推荐使用Google V8插件以增强Node.js的调试体验。安装方法有两种:一是通过Eclipse Marketplace搜索并安装;二是通过“Help”菜单中的“Install New Software”,在名称栏输入“googleV8”。此插件能够显著改善调试过程中的性能和响应速度,提高开发者的生产力。 ... [详细]
  • 本文探讨了如何利用RxJS库在AngularJS应用中实现对用户单击和拖动操作的精确区分,特别是在调整区域大小的场景下。 ... [详细]
  • 本文将探讨面试过程中常见的八大问题,并提供有效的应对策略,帮助求职者更好地准备面试,避免落入陷阱。通过本文的指导,求职者可以在面对类似问题时更加自信地展现自己。 ... [详细]
  • 如何更改Win10本地管理员账户名称
    本文详细介绍了更改Windows 10操作系统中本地管理员账户名称的方法,包括通过计算机管理界面进行操作的具体步骤。 ... [详细]
  • 本文探讨了程序员这一职业的本质,认为他们是专注于问题解决的专业人士。文章深入分析了他们的日常工作状态、个人品质以及面对挑战时的态度,强调了编程不仅是一项技术活动,更是个人成长和精神修炼的过程。 ... [详细]
  • 当前笔记本更新换代速度如何?Windows 7逐渐退出历史舞台 ... [详细]
  • Win10 S系统与Chrome浏览器兼容性问题分析
    2017年5月2日,微软在美国推出了最新的Windows 10 S操作系统,专为教育领域设计,旨在为教师和学生提供一系列高效的产品和服务。该系统的最大特点是其简洁的设计和快速的响应速度,然而在与某些应用的兼容性方面,特别是Chrome浏览器,仍存在一些问题。本文将深入分析这些兼容性问题,并探讨可能的解决方案。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
author-avatar
允思顾我在
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有