美文网首页前端学习
BOM 对象 & localStorage &

BOM 对象 & localStorage &

作者: 荷尔蒙榨汁机 | 来源:发表于2017-12-16 11:52 被阅读44次

window.onload 和 document.onDOMContentLoaded 有什么区别?

两者的区别主要是触发的时机不同,DOMContentLoaded是在DOM树构建完成触发,而onload是在DOM树构建完成、外部的js、css、图片等资源都加载完成后再触发。
借助DevTools Network可以知道DOMcontentLoaded(紫色线)一般比onload(红色线)的触发时间更早。

DevTools Network

URL 如何编码解码?为什么要编码?

  • encodeURI\decodeURI 该方法不会对ASCII字母数组~!@#$&*()=:/,;?+'字符进行编解码
  • encodeComponent\decodeURIComponent 该方法不会对ASCII字母数组~!*()'字符进行编解码
var url = 'https://www.baidu.com/s?wd=编码';

console.log(encodeURI(url));// "https://www.baidu.com/s?wd=%E7%BC%96%E7%A0%81"
console.log(encodeURIComponent(url)); // "https%3A%2F%2Fwww.baidu.com%2Fs%3Fwd%3D%E7%BC%96%E7%A0%81"

URL(统一资源标识定位符)只能使用英文字母、阿拉伯数字和某些标点符号($-_.+!*’(),&/:;=?@),不能使用其他文字和符号。所以当URL中出现中文或不安全字符(#”%<>[]{}|^`~)时需要进行编码才能使用。

关于URL编码,RFC1738做了如下的规定:

“Only alphanumerics [0-9a-zA-Z], the special characters “$-_.+!*’(),” [not including the quotes - ed], and reserved characters used for their reserved purposes may be used unencoded within a URL.”

RFC继而说明了保留字、特殊符号、不安全字符的含义——也就是说,下面三类字符可以不经过编码,直接出现在URL上:

  • [0-9a-zA-Z]
  • 特殊字符:$-_.+!*’(),
  • 保留字符:&/:;=?@

为了让我们思路更清晰,我们再总结一下,哪些字符必须要编码:

  • ASCII表中没有对应可显示字符的,例如汉字
  • 不安全字符,包括:#”%<>[]{}|^`~
  • 不当做保留字符来使用的保留字符,即&/:;=?@

cookie & session &localStorage 分别是什么?

cookie是浏览器第一次访问网页服务器后,服务发给浏览器用来标识用户身份的一段数据,大小不能超过4KB。
session是服务器保存的用来跟踪用户回话状态的。使用session id来标识用户,session id保存在cookie中。
localStorage是HTML5中新增API,用于将大量数据(最大5M)保存在浏览器中,保存后数据永远存在不会失效过期,除非用 js手动清除。

相关文章

网友评论

    本文标题:BOM 对象 & localStorage &

    本文链接:https://www.haomeiwen.com/subject/zvzrwxtx.html