BOM 對象 & localStorage & cookie & session

window.onload 和 document.onDOMContentLoaded 有什么區(qū)別?

兩者的區(qū)別主要是觸發(fā)的時機不同,DOMContentLoaded是在DOM樹構(gòu)建完成觸發(fā),而onload是在DOM樹構(gòu)建完成、外部的js、css、圖片等資源都加載完成后再觸發(fā)。
借助DevTools Network可以知道DOMcontentLoaded(紫色線)一般比onload(紅色線)的觸發(fā)時間更早。

DevTools Network

URL 如何編碼解碼?為什么要編碼?

  • encodeURI\decodeURI 該方法不會對ASCII字母、數(shù)組、~!@#$&*()=:/,;?+'字符進(jìn)行編解碼
  • encodeComponent\decodeURIComponent 該方法不會對ASCII字母數(shù)組、~!*()'字符進(jìn)行編解碼
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(統(tǒng)一資源標(biāo)識定位符)只能使用英文字母、阿拉伯?dāng)?shù)字和某些標(biāo)點符號($-_.+!*’(),&/:;=?@),不能使用其他文字和符號。所以當(dāng)URL中出現(xiàn)中文或不安全字符(#”%<>[]{}|^`~)時需要進(jìn)行編碼才能使用。

關(guān)于URL編碼,RFC1738做了如下的規(guī)定:

“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繼而說明了保留字、特殊符號、不安全字符的含義——也就是說,下面三類字符可以不經(jīng)過編碼,直接出現(xiàn)在URL上:

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

為了讓我們思路更清晰,我們再總結(jié)一下,哪些字符必須要編碼:

  • ASCII表中沒有對應(yīng)可顯示字符的,例如漢字
  • 不安全字符,包括:#”%<>[]{}|^`~
  • 不當(dāng)做保留字符來使用的保留字符,即&/:;=?@

cookie & session &localStorage 分別是什么?

cookie是瀏覽器第一次訪問網(wǎng)頁服務(wù)器后,服務(wù)發(fā)給瀏覽器用來標(biāo)識用戶身份的一段數(shù)據(jù),大小不能超過4KB。
session是服務(wù)器保存的用來跟蹤用戶回話狀態(tài)的。使用session id來標(biāo)識用戶,session id保存在cookie中。
localStorage是HTML5中新增API,用于將大量數(shù)據(jù)(最大5M)保存在瀏覽器中,保存后數(shù)據(jù)永遠(yuǎn)存在不會失效過期,除非用 js手動清除。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容