BOM 的概念和常用 API
- BOM 就是Borrow object Model 浏览器对象模型
- 常用api接口
- window.location.assign('需要跳转的页面')
- window.reload() 刷新页面
- window.history.forward() 前进类似网页的前进功能 但是需要在前进有网页的情况下
- window.back()后退 同理
- 浏览器信息 window.navigator
- appVersion 浏览器当前版本信息
- 让浏览器出现一个弹出框(alert/prompt/confirm)
- BOM 的核心就是 window 对象
- window 是浏览器内置的一个对象, 里面包含着操作浏览器的方法
获取浏览器窗口的尺寸(包含滚动条)
- window.innerHeight() 获取浏览器高度
- window.innerWidth() 获取浏览器宽度
浏览器的弹出层 (confirm / alert / prompt)
- alert() 可以吧需要的数据弹窗输出
- prompt() 可以获取到用户输入的信息
- confirm() 返回布尔值 点击确定返回true 取消返回false
浏览器的本地存储(localStorage---sessionStorage---cookie)
-
-localstorage 本地储存
- 只能存基础数据类型(一般为字符串), 不能存储复杂数据类型 将数据储存在浏览器 一般应用与免登录 就是类似记住密码
- 语法 localStorage.setItem('key','value') 以字符串的方式储存 获取方法 localStorage.getItem('key') 可以获取到key 和对应的value 清除方法 * removeItem('key') * clear('key')
// 增 window.localStorage.setItem(key, value) // 删 window.localStorage.removeItem(key) // 清除 window.localStorage.clear() /** * 查 * 有 ---> 返回对应的 value * 没有 ---> 返回 Null */ window.localStorage.getItem(key) -
sessionstorage 与 localStorage类似 但是 sessionstorage 会在界面关闭后消失 而 localStorage会永久储存在浏览器 除非手动删除 语法相同
- 浏览器的本地存储, 临时存储, 关闭浏览器以后, 存储内容自动消失
- 想要跨页面通讯, 必须是从本页面跳转的才可以
// 增
window.sessionStorage.setItem(key, value)
// 删
window.sessionStorage.removeItem(key)
// 清除
window.sessionStorage.clear()
/**
* 查
* 有 ---> 返回对应的 value
* 没有 ---> 返回 Null
*/
window.sessionStorage.getItem(key)
- cookie
- 只能储存字符串,且格式固定
js 'key=value'
- 储存大小有限制
- 4kb左右
- 存储有时效性
- 默认是会话级别 就是关闭浏览器便会清除
- 但是可以手动设置过期时间
- 跟随前后端请求
- 只要是有cookie缓存 都会跟随
- 和后端交互时便会跟随
- 可以被后端操作
- 储存依赖域名
- 不能跨域名通讯
- 只能在当前域名下使用 也就是存储域名下可以使用
- 只能储存字符串,且格式固定
// 设置 cookie
document.cookie = 'a=100'
// 设置一条带有过期时间的 cookie
var time = new Date()
document.cookie = 'a=100;expires=' + time //expires 设置过期时间
// 设置一条 30s 以后过期的 cookie
var time = new Date()
time.setTime(time.getTime() - 1000 * 60 * 60 * 8 + 1000 * 30)
document.cookie = 'a=100;expires=' + time
// 获取 cookie
document.cookie
localStorage : 硬盘存储 sessionStorage : 内存存储
-
三者的差异(出现时间-存储大小-前后端交互-前后端操作-过期时间)
- 出现时间
- cookie: 有 JS 就有了
- storage: H5 出现后才有
- 存储大小
- cookie: 4k 左右
- storage: 20MB 左右
- 前后端交互
- cookie: 会随着当前页面的请求自动携带
- storage: 不会跟随请求自动携带
- 前后端操作
- cookie: 前后端语言都可以操作
- storage: 只能前端 JS 操作
- 过期时间
- cookie: 默认是会话, 可以手动设置过期时间
- storage: 不能手动设置
- localStorage 和 sessionStorage 的区别
- 过期时间
- localStorage: 永久存储, 除非手动清除
- sessionStorage: 临时存储
- 跨页面通讯
- localStorage: 直接跨页面通讯
- sessionStorage: 只能是当前窗口跳转的页面才可以通讯
- 共同点
- 只能存储字符串, 不能存储复杂数据类型
- 存储其他数据类型的时候, 获取回来的也是 字符串类型
- 过期时间
- 出现时间
浏览器的地址信息 (location)
-
location.href 页面跳转
js window.location.href = 'https://www.baidu.com' -
location.reload 页面刷新
浏览器的版本信息 navigator (了解)
- window 中的 navigator 可以获取到浏览器的信息
浏览器的 onload 事件
- window.onload:界面上所有内容加载完毕之后才触发这个事件 语法
window.onload = function () {
js代码书写区域 这里代码会在界面加载完成后才开始执行
}
- 在浏览器中, 把 JS 写在 head 中, JS 在加载时 DOM 还没加载完, 可能会导致获取 DOM 时出现问题, 但是如果把代码放在 onload 事件中, 则不会出现问题
- 如果把 JS 写在 body 底部, 则写不写 onload 都一样
浏览器的 onscroll 事件
- scroll 即滚动条 就是当页面触发滚动条时触发的事件 代码语法和onload事件类似
window.onscroll = function () {
要执行的代码 (在触发滚动条时执行)
}
浏览器的滚动距离
- 浏览器的内容可以滚动, 那么我们就可以获取到浏览器滚动的距离
- 但是需要思考一个问题
- 浏览器真的滚动了吗?
- 其实浏览器没有滚动, 一直在那里, 滚动的是浏览器的页面
- 所以说:
其实浏览器没动, 只不过页面向上走了
- 所以这个已经不能单纯的算是浏览器的内容了, 而是我们页面的内容
- 所以不再是使用 window 对象了, 而是使用 document 对象
scrollTop 就是获取页面向上滚动的距离
- 获取方式
document.body.scrollTop没有 :!DOCTYPEdocument.documentElement.scrollTop页面声明:!DOCTYPE的时候只能用document.documentElement.scrollTop
window.onscroll = function () {
var ss = document.body.scrollTop
var sss = document.documentElement.scrollTop
console.log(ss, sss)
}
- 区别
- IE 浏览器(了解)
- 没有
DOCTYPE声明的时候, 用这两个都行 - 有
DOCTYPE声明的时候, 只能用document.documentElement.scrollTop
- 没有
- Chorme 和 FireFox
- 没有
DOCTYPE声明的时候, 用document.body.scrollTop - 有
DOCTYPE声明的时候, 用document.documentElement.scrollTop
- 没有
- Safari
- 两个都不用, 使用一个单独的方法
window.pageYOffset
- 两个都不用, 使用一个单独的方法
- IE 浏览器(了解)
scrollLeft
- 获取页面向左滚动的距离
document.body.scrollLeft同理document.documentElement.scrollLeft
window.onscroll = function () {
console.log(document.body.scrollLeft)
console.log(document.documentElement.scrollLeft)
}