文章目录
BOM 浏览器对象模型
一、BOM基本概念
1. BOM简介
- BOM(Browser Object Model,浏览器对象模型)是 JavaScript 与浏览器窗口交互的接口
- 一些与浏览器改变尺寸、滚动条滚动相关的特效,都要借助BOM技术
二、BOM常用对象
1. window对象
- window 对象是当前 JS 脚本运行所处的窗口,而这个窗口中包含 DOM 结构,window.document 属性就是 document 对象
- 在有标签页功能的浏览器中,每个标签都拥有自己的 window 对象;也就是说,同一个窗口的标签页之间不会共享一个 window 对象
- 全局变量是window的属性:
- 全局变量会变成 window 对象的属性
- 这就意味着多个 js 文件之间是共享全局作用域的,即 js 文件没有作用域隔离功能
- 内置函数普遍是window的方法:
- 如 setInterval()、alert() 等内置函数,普遍是 window 的方法
- 窗口尺寸相关属性
- 获得不包含滚动条的窗口宽度,要用
document.documentElement.clientWidth
- resize事件:监听窗口改变
在窗口大小改变之后,就会触发 resize 事件,可以使用 window.onresize 或者 window.addEventListener(‘resize’) 来绑定事件处理函数 var scrollTop = window.scrollY || document.documentElement.scrollTop;
已卷动高度:
window.scrollY 属性表示在垂直方向已滚动的像素值
已动高度:
document.documentElement.scrollTop 属性也表示窗口卷动高度
(document.documentElement.scrollTop 不是只读的,而 window.scrollY 是只读的)- scroll事件:
在窗口被卷动之后就会触发 scroll 事件,可以使用 window.onscroll 或者 window.addEventListener(‘scroll’) 来绑定事件处理函数
2. Navigator对象
- window.navigator 属性可以检索 navigator 对象,它内部含有用户此次活动的浏览器的相关属性和标识
3. History对象
- window.history 对象提供了操作浏览器会话历史的接口
- 常用操作就是模拟浏览器回退按钮
4. Location对象
- window.location 标识当前所在网址,可以通过给这个属性赋值命令浏览器进行页面跳转
- 重新加载当前页面:
可以调用 location 的 reload 方法以重新加载当前页面,参数 true 表示强制从服务器重新加载 - GET请求查询参数:
window.location.search 属性即为当前浏览器的 GET 请求查询参数
三、BOM特效开发
1. 返回顶部按钮制作
- 返回顶部的原理:改变 document.documentElement.scrollTop 属性,通过定时器逐步改变此值,则将用动画形式返回顶部
<script>
var backtotopBtn = document.getElementById('backtotopBtn');
var timer;
backtotopBtn.onclick = function () {
//设表先关
clearInterval(timer);
//设置定时器
timer = setInterval(function() {
//不断让scrollTop减少
document.documentElement.scrollTop -= 200;
//停止定时器
if (document.documentElement.scrollTop <= 0) {
clearInterval(timer);
}
}, 20);
};
</script>
2. 楼层导航效果
- DOM元素都有 offsetTop 属性,表示此元素到定位 祖先元素 的垂直距离
定位祖先元素:在祖先中,离自己最近的且拥有定位属性的元素