十六、关于BOM的相关内容总结

28 阅读4分钟

一、认识BOM

BOM是浏览器对象模型,其实就是操作浏览器的一些能力。可以操作的内容有:

  • 获取浏览器的相关信息
  • 操作浏览器进行页面的跳转
  • 获取浏览器地址栏的信息
  • 操作浏览器的滚动条
  • 获取浏览器的版本
  • 让浏览器出现一个弹出框
  • ....

二、关于BOM的一些操作

在开始讲解BOM操作之前,我们首先要明确:BOM的核心就是 window 。(window是JS内置的一个对象,里面包含着操作浏览器的方法)

  1. 获取浏览器窗口的尺寸
  • 语法:window.innerHeight / window.innerWidth
  • 作用:获取浏览器的高度和宽度(包括滚动条)
   console.log(window.innerHeight)  //获取浏览器高度
   console.log(window.innerWidth)   //获取浏览器宽度
  1. 浏览器的弹出层(简单了解即可,实际开发中很少使用)
  • alert
  • prompt
  • confirm:由一条询问信息和两个按钮组成,按钮分别为“确认”按钮和“取消”按钮;
      • 点击确认按钮,返回"true"
      • 点击取消按钮,返回"false"
  1. 获取浏览器的地址信息
  • 在window对象中,有一个对象叫做location,它是专门用来存储浏览器地址栏的信息。
  • 在location对象中,有一个href属性,专门用来存储浏览器地址栏内的url地址的信息。
  • 我们也可以给href重新赋值,这样就可以让页面跳转到我们赋值的地址了。
//示例:设置倒计时器,让页面在3秒后跳转到“百度”的页面
setTimeout(function(){
    window.location.href = 'https://www.baidu.com/'
},3000)
  • 在location对象中,有一个方法叫做reload,当调用这个方法时,会重新加载页面,也就是我们说的“刷新”。但是需要注意的是,如果我们调用了这个方法,那么书写代码的时候,要将reload方法放在事件中,否则页面会一直刷新。
//示例:让页面每5次循环刷新一次
var  count = 0 
setInterval(function(){
  count++
  if(count === 5){
  window.location.reload()
}
  1. 获取浏览器的历史记录
  • window对象中用history专门来存储历史记录。
  • 语法1:window.history.back()
  • 作用:用来回退历史信息,也就是回到上一个页面
  • 注意:需要有上一条记录,才能执行回退
  • 语法2:window.history.forward()
  • 作用:去到下一条历史记录里,也就是下一个页面
  • 注意:需要之前有过回退操作,才能执行此操作
  1. 获取浏览器的版本信息(了解即可)
  • 语法:window.navigator
  1. 浏览器的onload事件
  • 语法:window.onload=function(){全部的JS代码})
  • 执行顺序:这个语法会在全部的页面资源加载完毕之后再执行
  • 使用onload的语境:如果把JS代码写在head标签中,那么根据浏览器会从上到下加载资源,此时会导致body内部标签的加载出现问题;要想解决这个问题,就要把JS代码写在onload中,原因是onload是在页面全部资源加载完毕之后执行,不会影响body内部代码的执行;如果是把JS代码写在body底部的话,用不用onload方法也就无所谓了。
  1. 浏览器的onscroll事件
  • 使用语境:当浏览器的滚动条滚动(或鼠标滚轮滚动)时,会触发该事件。(前提是有滚动条)
  1. 浏览器的滚动距离
  • 当浏览器触发了onscroll事件了之后,就会有滚动距离。需要注意的是,此时不是浏览器发生了滚动,而是浏览器的页面发生了滚动。所以此时不能再使用window对象,而是document对象。
  • scrollTop 获取页面向上滚动距离
      • 语法1:document.documentElement.scrollTop()
      • 语法2:document.body.scrollTop()
      • 需要注意的是:这两种语法存在兼容性问题。在IE浏览器中,如果没有DOCTYPE声明,两种语法都可以,如果有DOCTYPE声明,那么只能使用语法1;在Chrome 和 FireFox中,如果没有DOCTYPE声明,只能使用语法2,有DOCTYPE声明的时候,只能用语法1;而在Safari中,则选择一种新的方式获取页面向上滚动距离:window.pageYOffset
  • scrollLeft 获取页面向左滚动距离
  • 语法使用规则同上