JavaScript的BOM了解一下

506 阅读5分钟

这是我参与更文挑战的第7天,活动详情查看: 更文挑战

介绍

BOM(即Browser Object Model),翻译成中文就是浏览器对象模型,其是使用JavaScript开发Web应用的核心所在。BOM提供了一些与网页无关的浏览器功能对象。BOM并没有一个固定的规范,浏览器开发商都按照自己的意愿来为它添砖加瓦。最终,浏览器实现之间共通的部分成为了事实标准,为Web开发提供了浏览器间交互操作的基础。

window

window对象是BOM的核心,是JS最顶层的对象,其他的BOM对象都是window对象的属性,所有定义在全局作用域中的变量、函数都是window对象的属性和方法,在调用的时候可以省略window。window对象不仅是通过JavaScript访问浏览器的接口,同时也是ECMAScript规定的Global对象。

window对象常用的方法:

  • window.onload() 窗口加载事件
  • window.onresize() 跳转窗口大小事件

location

location 是最有用的BOM对象之一,提供了当前窗口中加载文档的信息,以及通常的导航功能。 这个对象独特的地方在于,它既是 window 的属性,也是 document 的属性。也就是说, window.location 和 document.location 指向同一个对象。 location 对象不仅保存着当前加 载文档的信息,也保存着把URL解析为离散片段后能够通过属性访问的信息。

location的属性和方法:

  • location.href 获取或者设置 整个URL
  • location.host 返回主机名(域名)
  • location.port 返回端口号 如果未写返回 空字符串
  • location.pathname 返回路径
  • location.search 返回参数
  • location.hash 返回片段 #后面内容 常见于链接、锚点
  • location.assign() 跟 href 一样,可以跳转页面(也称为重定向页面)
  • location.replace() 替换当前页面,因为不记录历史,所有不能后退
  • location.reload() 重新加载页面,相当于刷新按钮或者 f5 如果参数为 true,强制刷新 Ctrl + f5

navigator

navigator 是由Netscape Navigator 2最早引入浏览器的,现在已经成为客户端标识浏览器的标准。 只要浏览器启用JavaScript, navigator 对象就一定存在。但是与其他BOM对象一样,每个浏览器都会根据自己的意愿为其添砖加瓦。

navigator的属性和方法:

  • activeVrDisplays 返回数组,包含 ispresenting 属性为 true的VRDisplay实例
  • appCodeName 在非Mozilla浏览器中也会返回 "Mozilla"
  • appName 浏览器全名
  • appVersion 浏览器版本,通常与实际的浏览器版本不一致
  • battery 返回暴露Battery Status API的BatteryManager 对象
  • buildId 浏览器的构建编号
  • connection 返回暴露Network Information API的NetworkInformation 对象
  • cookieEnabled 返回布尔值,表示是否启用了cookie
  • credentials 返回暴露Credentials Management API的CredentialsContainer 对象
  • deviceMemory 返回单位为GB的设备内存容量
  • doNotTrack 返回用户的“不跟踪”(do-not-track)设置
  • geolocation 返回暴露Geolocation API的Geolocation 对象
  • getVRDisplays() 返回数组,包含可用的每个VRDisplay 实例
  • getUserMedia() 返回与可用媒体设备硬件关联的流
  • hardwareConcurrency 返回设备的处理器核心数量
  • javaEnabled 返回布尔值,表示浏览器是否启用了Java
  • language 返回浏览器的主语言
  • languages 返回浏览器偏好的语言数组
  • locks 返回暴露Web Locks API的LockManager 对象
  • mediaCapabilities 返回暴露Media Capabilities API的MediaCapabilities 对象
  • mediaDevices 返回可用的媒体设备
  • maxTouchPoints 返回设备触摸屏支持的最大触点数
  • mimeTypes 返回浏览器中注册的MIME类型数组
  • onLine 返回布尔值,表示浏览器是否联网
  • oscpu 返回浏览器运行设备的操作系统和(或)CPU
  • permissions 返回暴露Permissions API的Permissions对象
  • platform 返回浏览器运行的系统平台
  • plugins 返回浏览器安装的插件数组。在IE中,这个数组包含页面中所有 元素
  • product 返回产品名称(通常是 "Gecko" )
  • productSub 返回产品的额外信息(通常是Gecko的版本)
  • registerProtocolHandler() 将一个网站注册为特定协议的处理程序
  • requestMediaKeySystemAccess() 返回一个期约,解决为MediaKeySystemAccess 对象
  • sendBeacon() 异步传输一些小数据
  • serviceWorker 返回用来与 ServiceWorker 实例交互的 ServiceWorkerContainer
  • share() 返回当前平台的原生共享机制
  • storage 返回暴露Storage API的StorageManager 对象
  • userAgent 返回浏览器的用户代理字符串
  • vendor 返回浏览器的厂商名称
  • vendorSub 返回浏览器厂商的更多信息
  • vibrate() 触发设备振动
  • webdriver 返回浏览器当前是否被自动化程序控制

screen

screen也是window的一个属性,是为数不多的几个在编程中很少用的JavaScript对象。这个对 象中保存的纯粹是客户端能力信息,也就是浏览器窗口外面的客户端显示器的信息,比如像素宽度和像素 高度。每个浏览器都会在 screen 对象上暴露不同的属性。

screen有如下属性:

  • availHeight 屏幕像素高度减去系统组件高度(只读)
  • availLeft 没有被系统组件占用的屏幕的最左侧像素(只读)
  • availTop 没有被系统组件占用的屏幕的最顶端像素(只读)
  • availWidth 屏幕像素宽度减去系统组件宽度(只读)
  • colorDepth 表示屏幕颜色的位数;多数系统是32(只读)
  • height 屏幕像素高度
  • left 当前屏幕左边的像素距离
  • pixelDepth 屏幕的位深(只读)
  • top 当前屏幕顶端的像素距离
  • width 屏幕像素宽度
  • orientation 返回Screen Orientation API中屏幕的朝向

history

history 对象表示当前窗口首次使用以来用户的导航历史记录。因为 history 是 window 的属 性,所以每个 window 都有自己的 history 对象。出于安全考虑,这个对象不会暴露用户访问过的 URL,但可以通过它在不知道实际URL的情况下前进和后退。

history的方法:

  • back() 可以后退功能
  • forward() 前进功能
  • go(参数) 前进后退功能 参数如果是1,前进一个页面;参数如果是-1,后退一个页面