BOM认识 | 青训营笔记

112 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 9 天

前言

今天主要学习了JS中BOM的基础知识,主要有:

  • 什么是BOM?BOM包含哪些对象?
  • 依次了解了window、location、history、navigator、screen

一. BOM的认识

BOM,全称Browser Object Model,即浏览器对象模型,是由浏览器提供的,用于处理文档(document)之外的所有内容的其他对象的一个对象模型,比如处理navigator、location、history等对象。

简单来说,BOM 就是 JavaScript 与浏览器对话的一个桥梁

BOM 包括以下的对象:

  • window:包括全局属性、方法,控制浏览器窗口相关的属性、方法;
  • location:当前浏览器的地址栏信息,通过 Location 可以获取地址栏信息,或者操作浏览器跳转页面。
  • history:浏览器的历史记录,通过该对象可以操作浏览器的历史记录
  • navigator:当前浏览器的信息,通过该对象可以识别不同的浏览器。
  • screen:屏幕窗口信息,通过该对象可以获取用户的显示器的相关信息

二. 对这些对象的认识

  1. window

所有浏览器都支持 window 对象,它代表浏览器的窗口。 全局变量是窗口对象的属性,全局函数是窗口对象的方法, document 也是 window 的属性:

如:window.location.hreflocation.href 的效果是等价的

属性:
window.innerHeight - 浏览器窗口的内部高度(px)
window.innerWidth - 浏览器窗口的内部宽度(px)

方法:
window.open() - 打开一个新窗口
window.close() - 关闭当前窗口
window.moveTo() - 移动当前窗口
window.resizeTo() - 调整当前窗口的大小

  1. location

location 对象既是 window 对象的属性,也是 document 对象的属性, 也就是说,window.location 和 document.location 引用的是同一个对象。

  • location 可用于获取当前页面地址 (URL) 并将浏览器重定向到新页面
  • location.href 返回当前页面的 href(URL)或跳转到其他的URL
  • location.hostname 返回当前网络主机或当前页面的名称
  • location.pathname 返回当前页面的路径名
  • location.protocol 返回使用的网络协议(http: 或 https:)
  • location.assign() 加载到新页面
console.log(location.href); // 获取当前页面的url 路径
location.href = 'www.baidu.com'; // 跳转到指定的页面

console.log(location.hostname); // juejin.cn
console.log(location.pathname); // /editor/drafts/7196261347881549883

location.href = 'https://github.com'; // 原页面跳转到github
  1. history history 对象包含浏览器历史记录,这些记录存放在历史列表中

方法:
history.back() - 模仿浏览器的后退按钮
history.forward() - 模仿浏览器的前进按钮
history.go(digit) - 为0表示刷新,为正/负表示向前或向后跳转

  1. navigator

Navigator对象中的大部分属性已被弃用,现在一般使用navigator.userAgent来获取浏览器的信息
其中的 userAgent 的值是一个字符串,简称 UA,包含了用来描述浏览器信息的内容,不同的浏览器会有不同的userAgent,以此来区分

  1. screen

属性:
screen.width - 浏览器屏幕宽度(包括导航和底部,px)
screen.height
screen.availWidth - 浏览器可用屏幕宽度
screen.availHeight - 屏幕的像素高度减去系统部件高度之后的值

lockOrientation方法:可把屏幕锁定为指定的方向
使用:const lockedAllowed = window.screen.lockOrientation(参数);

其中可能的的参数:
portrait-primary、portrait-secondary、landscape-primary

可同时设置多个锁定值,故,如果锁定设置为只有一个方向,屏幕方向将永远不会改变,直到屏幕方向解锁。 否则,只要方向在设备锁定的方向之中,屏幕方向就会从一个方向改变到另一个方向。