JS中关于BOM

101 阅读3分钟

1.认识BOM

  • BOM:浏览器对象模型,其实就是操作浏览器的一些能力

  • 我们可以操作哪些内容?

    • 获取浏览器的相关信息
    • 操作浏览器进行页面的跳转
    • 获取浏览器地址栏信息
    • 操作浏览器的滚动条
    • 获取浏览器的版本
    • 让浏览器出现一个弹出窗
    • ...
  • BOM的核心就是 window 对象,window是 JS 内置的一个对象,里面包含着操作浏览器的方法

2.BOM操作浏览器的一些内容

2.1获取浏览器窗口的尺寸

  • 作用:获取浏览器窗口的高度和宽度(包含滚动条)
  • 语法: window.innerHeight / window.innerWidth
     console.log('高度:', window.innerHeight)
     console.log('宽度:', window.innerWidth)

2.2 浏览器的弹出层

alert
prompt
confirm(有一个询问信息和两个按钮)
点击确定按钮,返回true;点击取消按钮,返回false

var boo = confirm('请问你确定进入页面吗?')
console.log(boo)

2.3 浏览器的地址信息

  • 在window对象中,有一个对象 叫做 location,他是专门用来存储浏览器地址栏内的信息

    • location 这个对象中,有一个属性叫做 href,这个属性是专门存储浏览器地址栏内的 url 地址的信息;我们也可以给这个属性赋值,这样就会跳转到我们赋值的地址了
    • reload 这个对象中,有一个方法 叫做reload,这个方法 调用时会重新加载页面,相当于刷新;注意!!!不要直接写在代码中,否则浏览器会一直刷新
    // loaction
    setTimeout(function(){
      window.location.href = 'https://www.baidu.com/'
    },3000)
    // reload
    var count = 0
    setInterval(function(){
      count++
      console.log(count)
      if(count === 5){
        window.location.reload() // 不能直接写在代码中
      }
    },1000)

2.4 浏览器的历史记录

  • window对象中,有一个叫做 history 他专门用来存储历史记录信息

2.4.1 history.back

  • 专门用来回退历史纪录,就是回到前一个页面,相当于浏览器左上角←按钮
  • 注意:我们需要有上一条记录,否则不能使用这个方法
  • 语法:window.history.back()

2.4.2 history.forward

  • 是去到下一个历史记录里面,也就是渠道下一个页面,相当于浏览器左上角的→按钮
  • 注意:我们需要之前有过回退操作,不然无法使用这个方法
  • 语法:window.history.forward()

2.5 浏览器的版本信息(了解)

  • window 中的navigator 可以获取到浏览器的信息
  • window.navigator

2.6 浏览器的onload事件

  • 这个事件会在页面所有资源加载完毕后执行
  • window.onload = function(){ 我们的JS代码全部书写在这个函数内内部}
  • 在浏览器中,把JS写在head 中,在JS加载时,下边的body标签还没来得及加载,可能会导致我们获取body内部的标签,比如说div 或者img,出现问题获取不到
  • 如果把 JS 写在body底部,写不写 onload 都无所谓

2.7 浏览器的 onscroll 事件

  • 当浏览器的滚动条滚动时会触发该事件,或者鼠标滚轮滚动的时候触发(前提是有滚动条)

2.8 浏览器的滚动距离

  • 浏览器的内容可以滚动,那么我们就能获取到浏览器的滚动距离;其实浏览器并没有滚动,而是浏览器内部的页面在滚动,所以这个不能单纯的说是浏览器的内容了,而是页面的内容了,那么我们就不能再使用 window 对象,而是使用document对象

  • scrollTop 获取的是 页面向上滚动的距离

    1. 语法1:document.body.scrollTop
    2. 语法2:document.documentElement.scrollTop
    3. 两种语法的区别:       
        IE浏览器(了解):
          没有DOCTYPE声明的时候,两种语法没有差别用哪个都无所谓;有DOCTYPE声明的时候,只能使用语法2 documentElement
        Chorme和FireFox:
          没有DOCTYPE声明的时候,用语法1,body;有DOCTYPE声明的时候,使用语法2 documentElement
        Safari:
          这两个语法都不用,使用一个单独的方法 window.pageYOffset
    
  • scrollLeft 获取的是页面向左滚动的距离

     语法1:document.body.scrollLeft
     语法2:document.documentElement.scrollLeft
     区别:参考 scrollTop
    
    //提前给body设置高度让他出现滚动条
    window.onscroll = function(){
      console.log('body:',document.body.scrollTop)
      console.log('documentRlement:',document.documentElement.scrollTop)
      
      console.log('body:',document.body.scrollLeft)
      console.log('documentElement:',document.documentElement.scrollLeft)
    }