浏览器 BOM

321 阅读2分钟

BOM 包含 window 对象, 从而包含 DOM

BOM 简介

  1. 什么是BOM?
    • DOM就是一套操作HTML标签的API(接口/方法/属性)
    • BOM就是一套操作浏览器的API(接口/方法/属性)
  2. BOM中常见的对象
    • window: 代表整个浏览器窗口 (注意: window是BOM中的一个对象, 并且是一个顶级的对象(全局))
    • navigator: 代表当前浏览器的信息, 通过这个对象我们就能判断用户当前是什么浏览器
    • location: 代表浏览器地址栏的信息, 通过这个对象我们就能设置或者获取当前地址信息
    • history: 代表浏览器的历史信息, 通过这个对象来实现刷新/上一步/下一步 注意点: 出于隐私考虑, 我们并不能拿到用户所有的历史记录, 只能拿到当前的历史记录
    • screen: 代表用户的屏幕信息 ()

BOM 的常用对象

navigator

代表当前浏览器的信息, 通过 navigator.userAgent 我们就能判断用户当前是什么浏览器

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>JavaScript-Navigator</title
  </head>
  <body>
    <script>
      // console.log(window.navigator);
      var agent = window.navigator.userAgent;
      if (/chrome/i.test(agent)) {
        alert("当前是谷歌浏览器");
      } else if (/firefox/i.test(agent)) {
        alert("当前是火狐浏览器");
      } else if (/msie/i.test(agent)) {
        alert("当前是低级IE浏览器");
      } else if ("ActiveXObject" in window) {
        alert("当前是高级IE浏览器");
      }
    </script>
  </body>
</html>

location

代表浏览器地址栏的信息, 通过 location.href 我们就能设置或者获取当前地址信息

  • 给 location.href 赋值可以实现跳转到指定网址, 这里无法只在地址栏赋值而不跳转
  • location.reload()
  • location.reload(true)
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>JavaScript-Location</title>
  </head>
  <body>
    <button id="btn1">获取</button>
    <button id="btn2">设置</button>
    <button id="btn3">刷新</button>
    <button id="btn4">强制刷新</button>
    <script>
      let oBtn1 = document.querySelector("#btn1");
      let oBtn2 = document.querySelector("#btn2");
      let oBtn3 = document.querySelector("#btn3");
      let oBtn4 = document.querySelector("#btn4");
      // 获取当前地址栏的地址, 一般就是网址嘛
      oBtn1.onclick = function () {
        console.log(window.location.href);
      };
      // 设置当前地址栏的地址, 这里 return false 不管用
      oBtn2.onclick = function () {
        window.location.href = "http://www.it666.com";
        return false;
      };
      // 刷新页面, 作用相当于按 F5
      oBtn3.onclick = function () {
        window.location.reload();
      };
      // 强制刷新页面, 作用相当于按 ctrl + F5
      oBtn4.onclick = function () {
        window.location.reload(true);
      };
    </script>
  </body>
</html>

history

代表浏览器的历史信息, 通过History来实现刷新/前进/后退

  • history.forward()
  • history.back()
  • history.go(number)

注意点:

  • 只有当前访问过其它的界面且有后退, 才能通过 forward/go 方法前进
  • 只有当前访问过其它的界面且有得退, 才能通过 back/go 方法后退
  • 如果给 go 方法传递 1, 就代表前进 1 个界面, 传递 2 就代表进行 2 个界面 如果给 go 方法传递 -1, 就代表后退 1 个界面, 传递 -2 就代表后退 2 个界面 如果给 go 方法传递 0, 就代表刷新
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>JavaScript-History1</title>
</head>
<body>
<h1>我是第一个界面</h1>
<button id="btn1">前进</button>
<button id="btn2">刷新</button>
<a href="JavaScript-History2.html">新的界面222</a>
<script>
    let oBtn1 = document.querySelector("#btn1");
    let oBtn2 = document.querySelector("#btn2");
    oBtn1.onclick = function () {
        // window.history.forward();
        window.history.go(1);
    }
    // 如果给go方法传递0, 就代表刷新
    oBtn2.onclick = function () {
        window.history.go(0);
    }
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>JavaScript-History2</title>
</head>
<body>
    <h2>我是第2222个界面</h2>
    <button id="btn1">后退</button>
    <script>
        let oBtn1 = document.querySelector("#btn1");
       	// 如果给go方法传递-1, 就代表后退1个界面, 传递-2就代表后退2个界面
        oBtn1.onclick = function () {
            // window.history.back();
            window.history.go(-1);
        }
    </script>
</body>
</html>