什麼是瀏覽器對象BOM?

什麼是 BOM?

BOM(Browser Object Model)即瀏覽器對象模型提供了獨立於內容而與瀏覽器窗口進行交互的對象。因爲 BOM 主要用於管理窗口與窗口之間的通信,所以其核心對象是 window。

相關方法(屬性)

彈出框

window.alert()

URL 的屬性

// 當前 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 對象

// 前進或者後退指定的頁面數
// 正爲前進,負爲後退
history.go()

// 後退一頁
history.back()

// 前進一晚上
history.forward()

Navigator 對象

// 返回用戶代理頭的字符串
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

size

// 瀏覽器的窗口高度
window.innerHeight
// 瀏覽器的窗口寬度
window.innerWidth
注意:
瀏覽器窗口的視圖不包括 工具欄滾動條
也就是說,在全屏狀態下,不一樣瀏覽器由於不一樣的瀏覽器佈局(工具欄、收藏欄、搜索欄)致使不一樣的 innerHeightinnerWidth

open

window.open(url, target, specs, replace)
  • url 要打開窗口的路徑
  • target 打開方法web

    • _blank 在新窗口打開,默認爲_blank
    • _self 在原窗口打開,替代原窗口
    • _parent 在父框架中打開
    • name 指定在某個窗口打開
  • 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

Cookies 用來在頁面儲存用戶信息

什麼是 Cookies

在服務器將頁面發送給瀏覽器後,服務器與瀏覽器之間的鏈接就斷開了,由於 HTTP 協議是無狀態的,此時,服務器就不會記得關於用戶的任何信息。瀏覽器

Cookie 就能夠來記住用戶信息:服務器

  • 當用戶訪問頁面是,他的名字就被儲存到 Cookie 中。
  • 當他下次訪問頁面時,Cookie 就會記得她的名字

儲存方式

name = Kisn

當瀏覽器向服務器發送網頁請求時,對應這個頁面的 cookies 就被加入到了請求中,這樣的服務器就能獲取到辨認這個用戶的所需的信息。cookie

操做 cookies 的方法

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()
  }
}

Cookie 和 Session 的區別

http 是一種無狀態協議,所以 Cookie 的最大的做用是儲存 sessionId 用辨識用戶app

Cookie、sessionStorage、localStorage 的區別

  • 共同點框架

    • 都是保存在瀏覽器端,而且是同源的
  • 不一樣點工具

    • Cookie:佈局

      • 儲存大小:4KB
      • 參與服務器通訊
      • 只要是同源的 http 請求中,都會存在 cookie,即 cookie 在瀏覽器和服務器之間來回傳遞,並且有實效(expires)。cookie 有路徑的概念,咱們能夠限制 cookie 只屬於某個路徑下
    • sessionStorage:

      • 儲存大小:5M
      • 不參與服務器通訊
      • 僅在當前瀏覽器窗口(該進程)會話期間有效,數據不是服務器請求儲存的,並且只有在請求時使用數據。
    • localStorage:

      • 儲存大小:5M
      • 不參與服務器通訊
      • 在同源窗口能夠共享,可是除非數據被清除,不然會一直存在。數據不是服務器請求儲存的,並且只有在請求時使用數據。

Cookie 如何防範 XSS 攻擊

XSS 是什麼?
XSS 全稱 跨站腳本攻擊,咱們能夠理解爲:經過某種方法向 web 頁面注入代碼,同時瀏覽器能夠被執行這段代碼。
好比簡單的論壇回覆,能夠插入部分 HTML、CSS、JS,能夠獲取咱們的 Cookie

咱們能夠在 HTTP 頭部配置,來防護 XSS 獲取 Cookie。

set-cookie: httponly // 禁止js腳原本訪問cookie
set-cookie: secure // 僅在請求爲https的時候發送cookie

screen

  • screen.width 顯示器的寬度
  • screen.height 顯示器的高度
  • screen.availWidth 屏幕的可用寬度
  • screen.availHeight 屏幕的可用高度
相關文章
相關標籤/搜索