热门标签 | 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社区 其它相关文章!


推荐阅读
  • 深入理解CSS中的margin属性及其应用场景
    本文主要介绍了CSS中的margin属性及其应用场景,包括垂直外边距合并、padding的使用时机、行内替换元素与费替换元素的区别、margin的基线、盒子的物理大小、显示大小、逻辑大小等知识点。通过深入理解这些概念,读者可以更好地掌握margin的用法和原理。同时,文中提供了一些相关的文档和规范供读者参考。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
  • ECMA262规定typeof操作符的返回值和instanceof的使用方法
    本文介绍了ECMA262规定的typeof操作符对不同类型的变量的返回值,以及instanceof操作符的使用方法。同时还提到了在不同浏览器中对正则表达式应用typeof操作符的返回值的差异。 ... [详细]
  • 使用chrome编辑器实现网页截图功能的方法
    本文介绍了在chrome浏览器中使用编辑器实现网页截图功能的方法。通过在地址栏中输入特定命令,打开控制台并调用命令面板,用户可以方便地进行网页截图操作。 ... [详细]
  • 本文整理了常用的CSS属性及用法,包括背景属性、边框属性、尺寸属性、可伸缩框属性、字体属性和文本属性等,方便开发者查阅和使用。 ... [详细]
  • PHP玩家基地系统毕业设计(附源码、运行环境)的用户登录界面、游戏管理和玩家作品管理
    本文介绍了一个PHP玩家基地系统的毕业设计,包括用户登录界面、游戏管理和玩家作品管理等功能。附带源码和运行环境,并提供免费赠送本源代码和数据库的方式,请私信获取详细信息。摘要共计约XXX字。 ... [详细]
  • Monkey《大话移动——Android与iOS应用测试指南》的预购信息发布啦!
    Monkey《大话移动——Android与iOS应用测试指南》的预购信息已经发布,可以在京东和当当网进行预购。感谢几位大牛给出的书评,并呼吁大家的支持。明天京东的链接也将发布。 ... [详细]
  • 本文介绍了《中秋夜作》的翻译及原文赏析,以及诗人当代钱钟书的背景和特点。通过对诗歌的解读,揭示了其中蕴含的情感和意境。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 如何压缩网站页面以减少页面加载时间
    本文介绍了影响网站打开时间的两个因素,即网页加载速度和网站页面大小。重点讲解了如何通过压缩网站页面来减少页面加载时间。具体包括图片压缩、Javascript压缩、CSS压缩和HTML压缩等方法,并推荐了相应的压缩工具。此外,还提到了一款Google Chrome插件——网页加载速度分析工具Speed Tracer。 ... [详细]
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社区 版权所有