CHANX's Blog

vuePress-theme-reco CHANX    2019 - 2020
CHANX's Blog

Choose mode

  • dark
  • auto
  • light
主页
分类
  • 其他other
  • 前端front-end
  • 后端back-end
  • 笔记note
  • 随笔essay
标签
时间轴
关于我
每日AC
快速访问🎈
  • 洛谷 (opens new window)
  • Virtual Judge (opens new window)
  • LeetCode (opens new window)
  • Vue.js (opens new window)
  • Can I Use (opens new window)
  • Java SE API Documentation (opens new window)
  • Program Creek (opens new window)
  • Spring (opens new window)
  • Stackoverflow (opens new window)
  • Linux命令大全 (opens new window)
  • 编程语言排行榜 (opens new window)
GitHub (opens new window)
author-avatar

CHANX

37

Article

21

Tag

主页
分类
  • 其他other
  • 前端front-end
  • 后端back-end
  • 笔记note
  • 随笔essay
标签
时间轴
关于我
每日AC
快速访问🎈
  • 洛谷 (opens new window)
  • Virtual Judge (opens new window)
  • LeetCode (opens new window)
  • Vue.js (opens new window)
  • Can I Use (opens new window)
  • Java SE API Documentation (opens new window)
  • Program Creek (opens new window)
  • Spring (opens new window)
  • Stackoverflow (opens new window)
  • Linux命令大全 (opens new window)
  • 编程语言排行榜 (opens new window)
GitHub (opens new window)

奇奇怪怪的Javascript

vuePress-theme-reco CHANX    2019 - 2020

奇奇怪怪的Javascript

CHANX 2020-11-18 21:13:11 Javascript

Javascript是最好的语言(滑稽.jpg

# 浮点数精度

# navigator.onLine真的可以实现断网检测吗?

摘录自红宝书:浏览器会跟踪网络连接状态并以两种方式暴露这些信息:连接事件和navigator.onLine属性。在设备连接导网络时,浏览器会记录这个事实并在window对象上触发online事件。相应地,断开网络连接后,浏览器会在window对象上触发offline事件。任何时候,都可以通过navigator.onLine属性来确定浏览器的联网状态。这个属性返回一个布尔值,表示浏览器是否联网。

哦吼!那我们直接利用他们不就达到想要的效果了吗?

红宝书后面补充了这么一句话:到底怎么才算联网取决于浏览器与系统实现。有些浏览器可能会认为只要连接到局域网就算"在线",而不管是否真正接入了互联网。

这么说来,这玩意还是不靠谱。看浏览器具体实现,那我还不如拿头去给你断网检测。回到重点,我对谷歌和火狐进行了同样的尝试,发现两者表现一致。能在网线拔掉和插入的时候触发相应事件,但我没有对有线连接局域网这一方式进行尝试。另外我发现在无线网络的条件下,断开连接网络貌似不会触发事件,真的是越来越奇怪了

由于websocket断网时有超时断开,所以最后我断网检测利用的是ws中open和close事件实现,其中websocket有实现心跳机制

# 时间戳真的是准确的吗?

利用new Date().getTime()去获取一个最新的时间戳,实际上它跟系统的时间设置有关。假设用户的时间并不准确,对于一些基于时间戳的逻辑操作而言,是存在非常大的隐患的。举例来说,一个用时间戳判定实现的倒计时器,是可以通过修改系统时间来实现延长时间的这么一个功能;基于时间戳实现的节流操作,会出现时间戳的差为负数的情况,导致节流失效并烂掉

那么,我们修改了系统时间,他就会立刻反应到浏览器上的吗?

经过我的尝试,谷歌浏览器应该是在系统到达新的一分钟的时候会更新到浏览器上(简单尝试,不保证如此

在 GitHub 上编辑此页! (opens new window)
上次更新时间: 11/27/2020, 10:24:39 AM