置顶文章
精选分类
前端
技术设计心得
思维照片
高质量精选kotlin
技术设计文章列表
19个提高工作效率的JavaScript单行代码,爱不释手啊!
post为什么会发送两次请求?
在前段时间的一次面试中,被问到了一个如标题这样的问题。要想好好地去回答这个问题,这里牵扯到的知识点也是比较多的。
那么接下来这篇文章我们就一点一点开始引出这个问题。
同源策略
在浏览器中,内容是很开放的,任何资源都可以接入其中,如 JavaScript 文件、图片、音频、视频等资源,甚至可以下载其他站点的可执行文件。
但也不是说浏览器就是完全自由的,如果不加以控制,就会出现一些不可控的局面,例如会出现一些安全问题,如:
- 跨站脚本攻击(XSS)
- SQL 注入攻击
- OS 命令注入攻击
- HTTP 首部注入攻击
- 跨站点请求伪造(CSRF)
- 等等……
如果这些都没有限制的话,对于我们用户而言,是相对危险的,因此需要一些安全策略来保障我们的隐私和数据安全。
这就引出了最基础、最核心的安全策略:同源策略。
JS 获取时区
# 啥是时区?
时区是地球上的区域使用同一个时间定义。以前,人们通过观察太阳的外置(时角)决定时间,这就使得不同经度的地方的时间各有不同,为了统一使用同一个时间,就引入了时区的概念。时区通过设立一个标准时间部分地解决了这个问题。世界各国位于地球的不同位置,因此不同国家,特别是东西跨度大的国家日出、日落时间必定有偏差,这些偏差就是时差。
# 表示
协调世界时(UTC)是最主要的世界时间标准,其以院子时秒长为基础,在时刻上尽量接近于格林威治标准时间。协调世界时是世界上调调节时钟和时间的主要标准。如果时间是以协调世界时(UTC)表示,则在时间后面加上 “Z”,“Z” 是协调世界时中 0 时区的标志。UTC 时间也叫祖鲁时间,因为在北约音标字母中用 “Zulu” 表示 “Z”。
UTC 偏移量的表示形式为:±[hh]:[mm]、±[hh][mm] 或者 ±[hh]。比如北京时间比协调世界时(UTC)早八小时,那么应当表示为:UTC+8。
JavaScript 获得当前客户端的时区
对象是 ECMAScript 国际化 API 的一个命名空间,它提供了精确的字符串对比、数字格式化和日期格式化。我们需要使用这个 API 的DateTimeFormat
对象。具体可以参考:MDNIntl.DateTimeFormat
获得客户端当前时区:
Intl.DateTimeFormat().resolvedOptions().timeZone // 'Asia/Shanghai' |
js 判断滚动到底部
JavaScript 判断手机端和pc端
# Navigator 对象:
navigator 对象包含有关浏览器的所有信息,且支持所有浏览器。
navigator 对象有一个属性为 userAgent,这是一个只读的字符串,声明了浏览器用于 HTTP 请求的用户代理头的值。所以我们可以通过判断 navigator.userAgent
里面是否包含某些值来判断。