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