BOM(Browser Object Model)即瀏覽器對象模型提供了獨立於內容而與瀏覽器窗口進行交互的對象。因爲 BOM 主要用於管理窗口與窗口之間的通信,所以其核心對象是 window。
window.alert()
// 當前 HTML 的 URL location.href // https://www.baidu.com/lastpath/go?name=zhangshan&id=89785#index // 查詢字符串部分 location.search // ?name=zhangshan&id=89785 // #號後面的值 location.hash // #index // 域名 location.host // www.baidu.com // 主域名 location.hostname // baidu.com // 主域名後面部分/路徑 location.pathname // lastpath/go // 端口號 location.port // 80(默認端口號) // 協議部分 location.protocal // https: // 加載指定的URL location.assign() // 替換指定的URL,不一樣於assgin,沒法返回 location.replace() // 刷新 location.reload()
// 前進或者後退指定的頁面數 // 正爲前進,負爲後退 history.go() // 後退一頁 history.back() // 前進一晚上 history.forward()
// 返回用戶代理頭的字符串 navigator.userAgent // "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36" // 返回是否能夠支持cookie navigator.cookieEnabled // 返回瀏覽器名稱 navigator.appName // Chrome,IE // 返回瀏覽器內核 navigator.appCodeName // Mozilla
// 瀏覽器的窗口高度 window.innerHeight // 瀏覽器的窗口寬度 window.innerWidth
注意:
瀏覽器窗口的視圖不包括工具欄
和滾動條
也就是說,在全屏狀態下,不一樣瀏覽器由於不一樣的瀏覽器佈局(工具欄、收藏欄、搜索欄)致使不一樣的innerHeight
和innerWidth
window.open(url, target, specs, replace)
url
要打開窗口的路徑target
打開方法web
_blank
在新窗口打開,默認爲_blank
_self
在原窗口打開,替代原窗口_parent
在父框架中打開specs
規定新窗口的樣式(用,
鏈接)json
width=pixels
height=pixels
replace
是否在history
列表中替代當前頁面window.open('https://www.baidu.com', '_self', 'width=1920,height=1080')
window.setTimeout(fn, ms) window.setInterval(fn, ms)
Cookies 用來在頁面儲存用戶信息
在服務器將頁面發送給瀏覽器後,服務器與瀏覽器之間的鏈接就斷開了,由於 HTTP 協議是無狀態的,此時,服務器就不會記得關於用戶的任何信息。瀏覽器
Cookie 就能夠來記住用戶信息:服務器
name = Kisn
當瀏覽器向服務器發送網頁請求時,對應這個頁面的 cookies 就被加入到了請求中,這樣的服務器就能獲取到辨認這個用戶的所需的信息。cookie
JavaScript 能夠用個document.cookie
屬性來穿件、讀取和刪除 cookiessession
// 建立 function setCookie(name, val, time) { var exp = new Date() exp.setTime(exp.getTime() + time) document.cookie = name + '=' + val + ';expires=' + exp.toGMTString() } // 讀取 function getCookie(name) { let reg = new RegExp('(^| )' + name + '=([^;]*(;|$))') if ((res = document.cookie.match(reg))) { return unescape(res[2]) } else { return false } } // 刪除 function delCookie(name) { let exp = new Date() exp.setTime = exp.getTime() - 1 let cval = getCookie(name) if (cval != null) { document.cookie = name + '=' + cval + ';expires=' + exp.toGMTString() } }
http 是一種無狀態協議,所以 Cookie 的最大的做用是儲存 sessionId 用辨識用戶app
共同點框架
不一樣點工具
Cookie:佈局
4KB
sessionStorage:
5M
localStorage:
5M
XSS 全稱 跨站腳本攻擊,咱們能夠理解爲:經過某種方法向 web 頁面注入代碼,同時瀏覽器能夠被執行這段代碼。
好比簡單的論壇回覆,能夠插入部分 HTML、CSS、JS,能夠獲取咱們的 Cookie
咱們能夠在 HTTP 頭部配置,來防護 XSS 獲取 Cookie。
set-cookie: httponly // 禁止js腳原本訪問cookie set-cookie: secure // 僅在請求爲https的時候發送cookie