引言
BOM 全称 Browser Object Model,浏览器对象模型 (BOM) 使 JavaScript 有能力与浏览器"对话"
BOM 对象
中只有一个全局对象window
。在浏览器环境中,window
对象是顶级对象,它代表整个浏览器窗口和浏览器环境,提供了对浏览器窗口、文档、导航、历史、存储和其他功能的访问和控制
Window 对象
- 所有浏览器都支持 window 对象,它表示浏览器窗口
- 所有 JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员
- 全局变量是 window 对象的属性,全局函数是 window 对象的方法
- 甚至 HTML DOM 的 document 也是 window 对象的属性之一
Window 尺寸
- window.innerHeight - 浏览器窗口的内部高度(包括滚动条)
- window.innerWidth - 浏览器窗口的内部宽度(包括滚动条)
- document.documentElement.clientHeight - html标签高度
- document.documentElement.clientWidth - html标签宽度
- document.body.clientHeight - body标签高度
- document.body.clientWidth - body标签宽度
Window 方法
- window.open() - 打开新窗口
- window.close() - 关闭当前窗口
- window.moveTo() - 移动当前窗口
- window.resizeTo() - 调整当前窗口的尺寸
Window Location 对象
window.location 对象用于获得当前页面的地址 (URL),并把浏览器重定向到新的页面
Location 属性
- location.hostname 返回 web 主机的域名
- location.pathname 返回当前页面的路径和文件名
- location.port 返回 web 主机的端口 (80 或 443)
- location.protocol 返回所使用的 web 协议(http: 或 https:)
- location.href 属性返回当前页面的 URL
Location 方法
location.assign() 方法加载新的文档
Window History 对象
window.history 对象包含浏览器的历史
History 方法
- history.back() - 与在浏览器点击后退按钮相同
- history.forward() - 与在浏览器中点击向前按钮相同
Window Navigator 对象
window.navigator 对象包含有关访问者浏览器的信息
Window 弹框
可以在 JavaScript 中创建三种消息框:警告框、确认框、提示框
- window.alert() - 警告框
- window.confirm() - 确认框
- window.prompt() - 提示框
Window 计时事件
通过使用 JavaScript,我们有能力做到在一个设定的时间间隔之后来执行代码,而不是在函数被调用后立即执行。我们称之为计时事件
在 JavaScript 中使用计时事件是很容易的,两个关键方法是:
- setInterval() - 间隔指定的毫秒数不停地执行指定的代码。
- setTimeout() - 在指定的毫秒数后执行指定代码。
注意: setInterval() 和 setTimeout() 是 HTML DOM Window对象的两个方法。
- clearInterval() 方法用于停止 setInterval() 方法执行的函数代码
- clearTimeout() 方法用于停止执行setTimeout()方法的函数代码
JavaScript Cookie 对象
- Cookie 用于存储 web 页面的用户信息
- Cookie 是一些数据, 存储于电脑上的文本文件中
- 当 web 服务器向浏览器发送 web 页面时,在连接关闭后,服务端不会记录用户的信息
Cookie 的作用就是用于解决 "如何记录客户端的用户信息":
- 当用户访问 web 页面时,它的名字可以记录在 cookie 中
- 在用户下一次访问该页面时,可以在 cookie 中读取用户访问记录
Cookie 以名/值对形式存储
JavaScript 可以使用 document.cookie 属性来创建 、读取、及删除 cookie
小结
其他BOM 对象
和方法都是window
对象的属性,可以通过window
对象来访问。这些对象和方法包括 document
、navigator
、history
、location
、localStorage
、alert
、confirm
、prompt
等
而在访问这些对象时,通常可以不加window.
前缀。这是因为这些对象和方法都被添加到了全局作用域中(因为全局对象的属性会自动添加到全局作用域中)
,因此可以直接访问,就好像它们是全局变量一样,无需显式使用window.
前缀
提示:当然带上前缀是更安全的做法,要是局部作用域定义了相同的变量名和方法,BOM 对象的就失效了