BOM
BOM :浏览器对象模型(由浏览器赋予我们的能力)
BOM 其实就是 浏览器提供给我们操作浏览器的一个能力
- 获取浏览器的宽高
- 获取浏览器页面卷去的高度
- 通过JS控制页面的跳转
- 获取浏览器地址栏的信息
- 操作浏览器地址栏的信息
- 操作浏览器页面的滚动条
- 获取到浏览器的版本
- 打开浏览器的弹窗
核心:
页面中有一个对象叫做 window
window JS 内置的一个对象,上述所有方法都可以利用 window 内部提供的一些东西解决
window 内的书写的时候可以 window.xxx xxx
console.log(window)
prompt('弹出框1:prompt')
window.prompt('弹出框2: window.prompt')
扩展:
我们所有的全局变量(函数以外的地方声明变量) 和 全局函数(函数以外的地方声明的函数)
全部存放在 window 对象中
window 对象中有一个属性叫做 name
所以我们在开发时,尽量避免全局变量或者全局函数的名字叫做name
var abc = 100
function abcfn1 (){}
var abcfn2 = function(){}
console.log(window)
浏览器窗口尺寸与弹出框
BOM
获取浏览器的窗口尺寸(宽高)
注意当前方法是包含浏览器的滚动条的
console.log('浏览器当前的宽度:',window.innerWidth)
console.log('浏览器当前的高度:',window.innerHeight)
BOM
打开浏览器提供的弹出框
prompt 用户输入框 会有一个返回值,就是用户输入的内容,永远是字符串格式
alert 弹出框
confim 用户询问框 会有一个返回值,如果点确定返回true,否则返回false
弹出框会中断(暂停)程序的运行,直到关闭弹出框
console.log('JS 开始')
alert('提示信息1:alert')
consoele.log('JS 运行到一半')
window.alert('提示信息2: window.alert')
console.log('JS运行完毕')
var res = window.confirm('你确定删除吗?')
console.log('用户确定与否',res)
浏览器的地址信息
浏览器的地址信息
在 window 对象中有一个对象 location,他的内部存储的就是 浏览器地址的信息
浏览器的地址信息
在 window 中 有一个对象叫做 location, 他是专门用来存储浏览器地址栏内的信息
location.href
location.href 专门存储浏览器地址栏内 url 地址的信息
语法: var url = window.location.href
我们也可以给这个属性赋值, 这样就会跳转到我们复制的地址了
window.location.href = 'www.baidu.com'
location.reload
location.reload 会重新加载页面, 相当于刷新 注意: 不要写在全局内, 否则浏览器会一直刷新 window.location.reload()
浏览器的历史记录
window中有一个对象叫做 history 他专门用来存储历史记录信息
history.forward
history.back 用来回退历史记录的,就是回到前一个页面,相当于浏览器左上角的 ← 按钮
注意:我们需要有上一条记录的,不然就一直在这个页面 不会回退
window.history.history.back()
history.forward
history.fortard 是渠道下一个历史记录里面, 也就是去到下一个页面,就相当于 浏览器左上角的 → 按钮
注意:前提是我们之前有过回退操作,不然的话我们现在就是在最后一个页面,没有下一个
window.hitory.forward()
浏览器的版本信息(了解)
window 中的 navigator 可以获取到浏览器的信息
window.navigator
浏览器的事件
浏览器延迟加载事件
在以前开发的时候,我们会将 所有的JS代码,全部放在这个函数中运行
因为在这个函数中运行的时候,可以保证页面所有的资源已经加载完毕了,比如 标签, 图片
window.onload = function(){
console.log('当前函数不需要调用,会在当前页面的所有资源加载完毕的时候执行')
}
//浏览器的滚动事件
window.onscroll = function(){
console.log('当前函数也不需要调用,会在浏览器发生滚动事件的时候执行')
}
浏览器的滚动距离
注意: 滚动事件发生的时候,浏览器的位置一直不变,而是 浏览器内的页面发生了滚动
window.onscroll = function(){
console.log('body:',document.body.scrollLeft)
console.log('documentElement: ',document.documentElement.scrollLeft)
}
如何区分
谷歌 火狐
如果 页面 声明 那么需要使用documentElement
否则使用 body
IE(了解)
如果没有 声明 那么使用两个都没问题
如果 声明 那么只能使用 documentElement
Safari
两个都不用,使用一个单独的方法 'window.pageYOffset'
localStorage(本地存储)
本地存储
把一些常用的信息存储在 用户的电脑本地(存储在浏览器中)
localStorage
浏览器的本地存储,持久化存储, 存储之后不手动删除, 那么永远存在
在存储的时候,只能存储基础数据类型中的字符串
如果需要存储其他数据类型,需要借助 JSON 提供的方法
可以实现跨页面通讯
// 增 --- 实现一个本地存储 (localStorage)
// window.localStorage.setItem('存储的标识是什么', '要存储起来的内容')
window.localStorage.setItem('box', '20230824')
window.localStorage.setItem('qq', '88888888')
window.localStorage.setItem('arr1', [1, 2, 3, 4, 5])
window.localStorage.setItem('obj1', { id: 'QF001', name: '张三' })
// JSON.stringify([1, 2, 3, 4, 5]) 会将传入的数组 转换成 JSON 格式的字符串, 然后存储到本地存储中
window.localStorage.setItem('arr2', JSON.stringify([1, 2, 3, 4, 5]))
window.localStorage.setItem('obj2', JSON.stringify({ id: 'QF001', name: '张三' }))
// 查 --- 获取之前存储到本地的一些数据
console.log('box: ', window.localStorage.getItem('box'))
var qq = window.localStorage.getItem('qq')
console.log('qq: ', qq)
// 获取到的数据有问题, 无法使用
console.log('arr1: ', window.localStorage.getItem('arr1'))
console.log('obj1: ', window.localStorage.getItem('obj1'))
// 此时获取到的 JSON 格式的 字符串, 想要使用 ,需要借助 JSON 提供的方法, 还原格式
console.log('arr2: ', window.localStorage.getItem('arr2'))
console.log('obj2: ', window.localStorage.getItem('obj2'))
// JSON.parse() 能够将传入的 JSON 格式的字符串还原成原本的数据类型, 原本是数组就还原为数组, 原本是对象就还原为对象
console.log('arr2: ', JSON.parse(window.localStorage.getItem('arr2')))
console.log('obj2: ', JSON.parse(window.localStorage.getItem('obj2')))
localStorage
增: window.localStorage.srtItem('key', 'value')
查: window.localStorage.getItem('key')
返回值: 查询到返回的数据,否则返回null
删:window.localStorage.removeItem('key')
清空: window.localStorage.clear()
推荐只使用删除,目的是为了自已操作不会影响别人的代码
sessionStorage
也是浏览器本地存储的一种方案,是临时存储,当时浏览器关闭的时候,存储的内容,自动清空
跨页面通讯 必须是从当前页面跳转过去的页面才能实现通讯
//增
window.sessionStorage.setItem('wx1','123456')
window.sessionStorage.setItem('wx2','qwerqwer')
window.sessionStorage.setItem('wx3','@#$%^')
window.sessionStorage.setItem('wx4','2310')
//查
var wx = window.sessionStorage.getItem('wx')
console.log(wx)
//删除
window.sessionStorage.removeItem('wx')
//清空
window.sessionStorage.clear()
cookie
- 只能存储字符串,并且有自己固定的格式 key=value; key2=value2; key3=value3
- 存储大小有限制 4kb 左右
- 存储具有时效性 默认是会话级(sessionStorage), 但是我们也可以指定过期时间
- 操作必须依赖服务器 目前可以借助 liveserver 启动页面 , 不要不要本地的方式启动
- 前端后端通讯的时候 会自动携带 cookie 前端向后端发起请求的时候,会自动把 cookie 内部的数据 发送给后端
- 前后端语言都可以操作
- 存储依赖域名,同一个域名可以通讯,否则不行
//设置一条 cookie
document
//设置一条 cookie
document.cookie = 'qq=66666666'
document.cookie = 'wx=88888888'
//获取 cookie
console.log(document.cookie)     //qq=6666666666666 wx=88888888
cookie_的过期时间
//设置一条 cookie
document.cookie = 'a=100'
//设置一条具有过期时间的 cookie
var time = new Date()
//因为我们当前时间是按照东八区的时间执行的,
//比世界标准时间快 8 小时,所以设置过期时间的时候需要将是将往回调8小时
times.setTime(time.getTime() - 8 * 60 * 60 * 1000 + 1000 * 3)
document.cookie = 'b=222;expires=' + time
setTimeout(function ( ){
console.log(document.cookie)
},5000)
本地存储之间的区别
1.出现时间 cookie 有 JS 的时候就有了 storage 有 H5 的时候才有的
2.存储大小 cookie 4kb左右 storage 4mb-20mb
3.前后端交互 cookie 交互时会自动传递给后端 stirage 交互时不会自动传递给后端,除非手动携带
4.前后端操作 cookie 前后端语言都可以操作 stirage 只能前端语言操作
5.过期时间 cookie 可以手动指定过期时间,也有默认的过期时间 storage 没有过期时间
两个 storage 之间的区别
localStorage 过期时间:持久化存储,除非手动删除 跨页面通讯:能过完成
sessionStorage 过期时间:临时存储,关闭浏览器的时候数据就会被清空 跨页面通讯: 只有从当前页面跳转过去的页面才能完成
两个 storage 的共同点
都必须存储字符串 存储其他数据类型的时候,需要借助 JSON 的方法进行一个转换