这是我参与「第五届青训营 」伴学笔记创作活动的第 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:屏幕窗口信息,通过该对象可以获取用户的显示器的相关信息
二. 对这些对象的认识
- window
所有浏览器都支持 window 对象,它代表浏览器的窗口。 全局变量是窗口对象的属性,全局函数是窗口对象的方法, document 也是 window 的属性:
如:window.location.href 和 location.href 的效果是等价的
属性:
window.innerHeight - 浏览器窗口的内部高度(px)
window.innerWidth - 浏览器窗口的内部宽度(px)
方法:
window.open() - 打开一个新窗口
window.close() - 关闭当前窗口
window.moveTo() - 移动当前窗口
window.resizeTo() - 调整当前窗口的大小
- 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
- history history 对象包含浏览器历史记录,这些记录存放在历史列表中
方法:
history.back() - 模仿浏览器的后退按钮
history.forward() - 模仿浏览器的前进按钮
history.go(digit) - 为0表示刷新,为正/负表示向前或向后跳转
- navigator
Navigator对象中的大部分属性已被弃用,现在一般使用navigator.userAgent来获取浏览器的信息
其中的 userAgent 的值是一个字符串,简称 UA,包含了用来描述浏览器信息的内容,不同的浏览器会有不同的userAgent,以此来区分
- screen
属性:
screen.width - 浏览器屏幕宽度(包括导航和底部,px)
screen.height
screen.availWidth - 浏览器可用屏幕宽度
screen.availHeight - 屏幕的像素高度减去系统部件高度之后的值
lockOrientation方法:可把屏幕锁定为指定的方向
使用:const lockedAllowed = window.screen.lockOrientation(参数);
其中可能的的参数:
portrait-primary、portrait-secondary、landscape-primary
可同时设置多个锁定值,故,如果锁定设置为只有一个方向,屏幕方向将永远不会改变,直到屏幕方向解锁。 否则,只要方向在设备锁定的方向之中,屏幕方向就会从一个方向改变到另一个方向。