BOM

  • BOM(Browser Object Model) 瀏覽器對象模型四康,提供了獨立于內(nèi)容的搪搏、可以與瀏覽器窗口進(jìn)行互動的對象結(jié)構(gòu)

window、navigator


window

  • var 聲明的全局變量和 function 聲明的函數(shù)是 window 的屬性
  • let闪金、const 聲明的變量不是
  • window 的常見屬性有 document疯溺、date

navigator

  • 瀏覽器相關(guān)信息
  • navigator.userAgent
  • navigator 是 window 的一個屬性,正常來說哎垦,可以省略 window 直接使用
  • 常見的 navigator 的一個屬性是 userAgent囱嫩,里面包含了用戶系統(tǒng)信息,可以通過正則判斷用戶設(shè)備類型

screen

  • 屏幕相關(guān)信息
  • 這個已經(jīng)超出了DOM的范疇了
  • window.screen.width/height
  • screen.orientation.onchange = function(){}這個函數(shù)可以監(jiān)聽用戶是橫屏還是豎屏

尺寸漏设、位置墨闲、滾動


尺寸

document.documentElement.offsetHeight  // 頁面文檔高度

screen.height  //屏幕高度

// 瀏覽器視窗高度
document.documentElement.clientHeight
window.innerHeight

// 頁面滾動的垂直距離
window.scrollY
document.documentElement.scrollTop

位置

// 距離最近的并且是定位元素的祖先元素
element.offsetParent

// 到距離最近的并且是定位元素的祖先元素的上下距離
element.offsetTop

// 獲取元素在視窗中的位置
element.getBoundingClientRect()

// 元素距離頁面頂部的距離
element.getBoundingClientRect().top + document.body.scrollTop

滾動

// 平滑滾動到哪里
window.scrollTo({
    top: 100,
    left: 0,
    behavior: 'smooth'
})
// 平滑滾動多少
window.scrollBy({
    top: window.innerHeight,
    left: 0,
    behavior: 'smooth'
})

應(yīng)用場景:滾動到頂部、全屏滾動

window的其他常用屬性方法


  • alert()
    • 彈框提示
  • prompt()
    • 接收輸入
  • confirm()
    • 確認(rèn)取消

URL的編碼解碼


  • decodeURI()
  • decodeURIComponent()
    • 重新拿到常見參數(shù)形式
  • encodeURI():對漢字等沒其他特殊字符進(jìn)行轉(zhuǎn)譯郑口,讓服務(wù)器能識別
    • 不會對: / ? & = # 編碼
  • encodeURIComponent()
    • 會對: / ? & = # 編碼

Cookie鸳碧、Session、localStorage


Cookie

  • cookie是存儲在瀏覽器上的一小段數(shù)據(jù)犬性,用來記錄某些當(dāng)頁面關(guān)閉或者刷新后仍然需要被記錄的信息瞻离。在控制臺可以使用document.cookie查看你當(dāng)前正在瀏覽的網(wǎng)站的cookie。
  • cookie可以使用js在瀏覽器直接設(shè)置(用于記錄不敏感信息乒裆,如用戶名)琐脏,也可以在服務(wù)器端通過使用HTTP協(xié)議規(guī)定的set-cookie來讓瀏覽器種下cookie,這是最常見的做法缸兔。(打開一個網(wǎng)站日裙,清除全部cookie,然后刷新頁面惰蜜,在network的Response headers就可以找到set-cookie)
  • 每次網(wǎng)絡(luò)請求Request headers中都會帶上cookie昂拂。所以如果cookie太多太大對傳輸效率會有影響。
  • 一般瀏覽器存儲cookie最大容量為4k抛猖,所以大量數(shù)據(jù)不要存到cookie格侯。
  • 設(shè)置cookie的參數(shù)
    • path:表示cookie影響到的路徑鼻听,匹配該路徑才發(fā)送這個cookie。
    • expires和maxAge:告訴瀏覽器cookie時候過期联四,maxAge是cookie多久之后過期的相對時間撑碴。不設(shè)置這兩個選項時會產(chǎn)生session cookie,當(dāng)用戶關(guān)閉瀏覽器的時候朝墩,就被清除醉拓,一般用來保存session的session_id。
    • secure:當(dāng)secure值為true時收苏,cookie在HTTP中是無效的亿卤,只有在HTTPS中才有效
    • httpOnly:瀏覽器不允許腳本操作document.cookie去更改cookie。一般情況下都應(yīng)該設(shè)置這個為true鹿霸,這樣可以避免被xss攻擊拿到cookie排吴。

Session

  • 當(dāng)一個用戶打開淘寶登錄之后,刷新瀏覽器仍然展示登錄狀態(tài)懦鼠。服務(wù)器如何分辨這次發(fā)起請求的用戶是剛才登錄過的用戶呢钻哩?這里就使用了session保存狀態(tài)。用戶在輸入用戶名密碼提交給服務(wù)端肛冶,服務(wù)端驗證通過后悔創(chuàng)建一個session用于記錄用戶的相關(guān)信息街氢,這個session可保存在服務(wù)器內(nèi)存中,也可保存在數(shù)據(jù)庫中淑趾。
    • 創(chuàng)建session后,會把關(guān)聯(lián)的session_id通過setCookie添加到http響應(yīng)頭部中忧陪。
    • 瀏覽器在加載頁面時發(fā)現(xiàn)響應(yīng)頭部有set-cookie字段扣泊,就把這個cookie種到瀏覽器指定域名下。
    • 當(dāng)下次刷新頁面時嘶摊,發(fā)送的請求會帶上這條cookie延蟹,服務(wù)端在接收后根據(jù)這個session_id來識別用戶。
  • cookie是存儲在瀏覽器中的一小段數(shù)據(jù)叶堆,而session是服務(wù)器用來識別身份的一段數(shù)據(jù)阱飘,有時候也特指身份識別機制。
  • Session鑒權(quán)流程
    • image.png

localStorage

  • localStorage HTML5本地存儲web storage特性的API之一虱颗,用于將大量數(shù)據(jù)(最大5M)保存在瀏覽器中
  • 保存后數(shù)據(jù)永遠(yuǎn)存在不會失效過期沥匈,除非js手動清除
  • 不參與網(wǎng)絡(luò)傳輸
  • image.png
  • 用于存儲本地數(shù)據(jù),以及性能優(yōu)化忘渔,如本地地圖
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末高帖,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子畦粮,更是在濱河造成了極大的恐慌散址,老刑警劉巖乖阵,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異预麸,居然都是意外死亡瞪浸,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門吏祸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來对蒲,“玉大人,你說我怎么就攤上這事犁罩∑氡危” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵床估,是天一觀的道長含滴。 經(jīng)常有香客問我,道長丐巫,這世上最難降的妖魔是什么谈况? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮递胧,結(jié)果婚禮上碑韵,老公的妹妹穿的比我還像新娘。我一直安慰自己缎脾,他們只是感情好祝闻,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著遗菠,像睡著了一般联喘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上辙纬,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天豁遭,我揣著相機與錄音菜拓,去河邊找鬼知态。 笑死散吵,一個胖子當(dāng)著我的面吹牛型宝,可吹牛的內(nèi)容都是我干的映九。 我是一名探鬼主播合呐,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼击敌,長吁一口氣:“原來是場噩夢啊……” “哼谓松!你這毒婦竟也來了涡匀?” 一聲冷哼從身側(cè)響起沟使,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎渊跋,沒想到半個月后腊嗡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體着倾,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年燕少,在試婚紗的時候發(fā)現(xiàn)自己被綠了卡者。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡客们,死狀恐怖崇决,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情底挫,我是刑警寧澤恒傻,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站建邓,受9級特大地震影響盈厘,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜官边,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一沸手、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧注簿,春花似錦契吉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至妄辩,卻和暖如春惑灵,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背恩袱。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工泣棋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留胶哲,地道東北人畔塔。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像鸯屿,于是被迫代替她去往敵國和親澈吨。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容