JS-BOM(浏览器对象模型)

BOM介绍

  • BOM - Browser Object Model
    • 浏览器对象模型
    • 是浏览器提供的一套可以操作浏览器相关内容的方法或属性
  • BOM中的顶级对象是window对象
    • 所有和浏览器操作相关的方法或属性都是属于window对象的属性
      • 用的时候可以省略window.
      • 例如:window.alert() ==> alert()
    • 在全局中通过var声明的变量或声明式函数,本质上都相当于是给window添加的属性
      • 也就是说,在全局定义的变量都会自动挂载到window
      • 在全局访问变量,也相当于在访问window对象的属性
      • 注意:window对象自带的属性名,不能在全局中作为变量名定义
  • 扩展:在html中标签的id值,在js中是可以直接使用的变量,表示js中获取的该元素

浏览器弹窗

  1. alert 提示弹窗
    • 语法:alert(内容)
    • 弹窗:包含 提示标题、确定按钮
    • 返回值:undefined
  2. confirm 确认弹窗
    • 语法:confirm(内容)
    • 弹窗:包含 提示标题、确定按钮、取消按钮
    • 返回值:布尔值,点击确定返回true,点击取消返回false
  3. prompt 询问弹窗
    • 语法:prompt(内容)
    • 弹窗:包含 提示标题、输入框、确定按钮、取消按钮
    • 返回值:
      • 点击确定返回输入框中的文本内容(字符串类型)
      • 点击取消返回null
  • 浏览器弹窗
    • 样式不可修改
    • 不同浏览器的弹窗样式不一样
    • 弹窗会阻断页面渲染及后续代码执行,只有当弹窗操作完毕后才会执行后续代码

浏览器可视窗口尺寸

  • 获取方式:
    • 语法:window.innerWidth
      • 浏览器可视窗口的宽度(包含滚动条)
    • 语法:window.innerHeight
      • 浏览器可视窗口的高度(包含滚动条)

浏览器事件

  1. load 页面加载事件
    • 语法:window.onload = 函数
    • 触发时机:当页面中的所有资源加载完毕后触发事件
  2. resize 页面窗口尺寸变化事件
    • 语法:window.onresize = 函数
    • 触发时机:当页面可视窗口尺寸变化时触发事件
  3. scroll 页面滚动事件
    • 语法:window.onscroll = 函数
    • 触发时机:当页面滚动时(滚动条滚动)触发事件
      • 注意:滚动一点,可能会触发多次

浏览器地址栏

  • window对象有一个location属性,值为对象
    • 操作浏览器地址栏的方法和属性都在window.location对象中
  • 利用location中的方法或属性实现页面跳转
    1. 使用href属性实现页面跳转
      • href属性:页面地址栏中的完整url地址(可读可写属性)
        • 获取:location.href
          • 返回页面地址栏中的完整url地址
        • 设置:location.href = 新地址
          • 赋值新地址后,当前页面地址栏中的地址将被替换(页面会刷新跳转)
    2. 直接给location赋值新地址实现页面跳转
      • location = 新地址
    3. 使用location中的方法实现页面跳转
      • location.assign(新地址)
      • location.replace(新地址)
  • location.search获取查询字符串
  • location.hash获取哈希值
  • location对象的reload方法
    • 语法:location.reload()
    • 作用:使页面重新加载(页面刷新)
    • 注意:不要在全局中书写,否则会不断刷新页面

浏览器页面历史记录

  • windowhistory属性中的方法,可用于操作当前页面的历史记录
    • 注意:页面中需要有历史记录才可以进行操作
    • 历史记录操作方法:
      1. back
        • 语法:history.back()
        • 作用:当前页面回退到历史记录的上一个页面
          • 相当于浏览器的左箭头按钮
      2. foward
        • 语法:history.forward()
        • 作用:当前页面前进到历史记录的下一个页面
          • 相当于浏览器的右箭头按钮
      3. go
        • 语法:history.go(n)
        • 作用:
          • 如果n为0则仅仅刷新页面
          • 如果n小于0则退回到历史记录的上n个页面
          • 如果n大于0则前进到历史记录的下n个页面

浏览器信息

  • windownavigator属性中有浏览器相关的内部信息
    • 比如:浏览器的版本信息、外部设备信息(蓝牙、摄像头、定位…)等
  • navigatoruserAgent属性
    • 语法:navigator.userAgent
    • 可以得到浏览器版本等信息

浏览器标签页

  1. open
    • 语法:window.open(地址)
    • 作用:打开一个新的标签页
    • 返回值:新标签页的标识对象
      • 使用新标签页的标识对象,可以关闭该标签页
        • 语法:标识对象.close()
  2. close
    • 语法:window.close()
    • 作用:关闭当前标签页
<button id="btn1">打开</button>
<button id="btn2">关闭</button>
btn1.onclick = function() {
    var wd = window.open('http://baidu.com')
    // 3秒后关闭新开的标签页
    setTimeout(function() {
        wd.close()
    }, 3000)
}

btn2.onclick = function() {
    window.close()
}

浏览器页面卷去的距离

  • 获取方式:
    • 当html页面有DOCTYPE声明
      • 语法:document.documentElement.scrollTop 浏览器页面卷去的垂直距离
      • 语法:document.documentElement.scrollLeft 浏览器页面卷去的水平距离
    • 当html页面没有DOCTYPE声明
      • 语法:document.body.scrollTop 浏览器页面卷去的垂直距离
      • 语法:document.body.scrollLeft 浏览器页面卷去的水平距离
    • 兼容写法:
      • document.documentElement.scrollTop || document.body.scrollTop
      • document.documentElement.scrollLeft || document.body.scrollLeft

浏览器页面滚动到

  • 语法1:window.scrollTo(水平位置, 垂直位置)
    • 作用:让页面直接滚动到指定位置
window.scrollTo(2000, 1000)
  • 语法2:window.scrollTo({配置对象})
    • 传入的对象可写的属性:
      • left:表示水平位置
      • top:表示垂直位置
      • behavior:可以传递'smooth',表示平滑滚动到目标位置
window.scrollTo({
    left: 2000,
    top: 1000,
    behavior: 'smooth'
})

浏览器本地存储

  • 也叫客户端本地存储
    • 就是可以在客户端存储数据
  • 浏览器的存储空间
    • cookie
    • Storage
  • 浏览器本地存储Storage
    • Storage分为两种
      • localStorage
      • sessionStorage
    • 存储空间大小:20MB左右
    • 存储数据的形式
      • 键值对形式存储
        • 注意:键名和键值都只能是字符串类型
    • 存储数据的有效性
      • localStorage是永久存储
      • sessionStorage是会话级别
        • 会话级别:页面打开到页面关闭
    • 存储位置
      • 如果是服务器打开页面,则存储在对应的服务器域名下
      • 如果是直接打开页面,则直接存储在打开的文件协议下
    • 跨页面访问能力
      • localStorage可以随意跨页面访问
      • sessionStorage只有从当前页面跳转的目标页面才可以访问
    • 浏览器提供了操作Storage的方法
  • localStorage的操作属于BOM操作
    1. 设置数据
      • 语法:localStorage.setItem(键名, 键值)
        • Storage中的键名是唯一的
        • 如果键名不存在则是添加
        • 如果键名存在则是修改
    2. 获取数据
      • 语法:localStorage.getItem(键名)
        • 根据键名获取对应的键值数据
          • 如果键名不存在则返回null
    3. 删除某一个数据
      • 语法:localStorage.removeItem(键名)
        • 根据键名删除数据
    4. 清空
      • 语法:localStorage.clear()
        • 清空所有数据
  • sessionStorage的操作属于BOM操作
    1. 设置数据
      • 语法:sessionStorage.setItem(键名, 键值)
        • Storage中的键名是唯一的
        • 如果键名不存在则是添加
        • 如果键名存在则是修改
    2. 获取数据
      • 语法:sessionStorage.getItem(键名)
        • 根据键名获取对应的键值数据
          • 如果键名不存在则返回null
    3. 删除某一个数据
      • 语法:sessionStorage.removeItem(键名)
        • 根据键名删除数据
    4. 清空
      • 语法:sessionStorage.clear()
        • 清空所有数据
  • 一般如果写入大量的数据,则会使用json格式字符串写入
var userList = [
    { name: 'zs', age: 12, score: 100 },
    { name: 'zls', age: 120, score: 1003 },
    { name: 'ww', age: 130, score: 1001 },
    { name: 'zl', age: 1200, score: 1002 }
]
localStorage.setItem('userData', JSON.stringify(userList))
// 后续使用
var data = JSON.parse(localStorage.getItem('userData'))
  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Turbosaa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值