[TOC]
BOM 概述
BOM 缺乏标准
window 对象的常见事件
- alert()
- window.onload()
文档内容加载完毕之后触发
- windows.onresize()
敞口尺寸变化时触发
定时器
- window.setTimeout()
一次性
- window.clearTimeout()
清除定时器,需要标识符
- window.setInterval()
重复执行
- clearInterval()
js 执行机制
this 指向问题
普通函数指向调用者
同步和异步任务
- 同步任务
同步任务都在主线程上执行,形成一个执行栈
- 异步任务
异步任务相关回调函数添加到任务队列中(也称为消息队列)
- 普通事件 click,resize 等
- 资源加载 load,error 等
- 定时器
执行机制
先执行执行栈中的同步任务后执行任务队列的异步任务
location 对象
window 对象给我们提供了一个 localtion 属性用于获取或设置窗体的 URL,并且可以用于解析 URL,因为这个属性返回的是一个对象,所以我们将这个属性也称为 location 对象
location 对象的属性
| location 对象属性 | 返回值 |
|---|---|
| location.href | 获取或设置 整个 URL |
| location.host | 返回主机域名 |
| location.port | 返回端口号,如未写则返回空字符串 |
| location.pathname | 返回路径 |
| location.search | 返回参数 |
| location.hash | 返回片段 #后面内容 常用于描点 链接 |
location 对象的常用方法
| location 对象方法 | 返回值 |
|---|---|
| location.assign() | 和 href 一样,可以跳转页面(也称为重定向页面) |
| location.replace() | 替换当前页面,不记录历史 |
| location.reload() | 重新加载页面,true 为强制刷新 |
navigator 对象
包含了浏览器相关的信息,他有很多属性,
history 对象
记录浏览器历史记录
| history 方法 | 返回值 |
|---|---|
| back() | 可以后退 |
| forward() | 前进功能 |
| go(参数) | 前进后退功能 参数如果是 1 前进 1 个页面,如果是-1 后退 1 个页面 |
元素偏移量 offset 系列
可以动态得到该元素的位置(偏移),大小等。
- 获得元素距离带有定位父元素的位置
- 获得元素自身的大小(宽度高度)
- 返回的数值不带单位
offset 常见属性
| offest 系列属性 | 作用 |
|---|---|
| element.offsetParent | 返回作为该元素带有定位的父级元素,如果父级元素都没有定位则返回 body |
| element.offsetTop | 返回元素相对带有定位父元素上方的偏移 |
| element.offsetLeft | 返回元素相对带有定位父元素左边的偏移 |
| element.offsetWidth | 返回自身包括 padding,border,content 的宽度,不带单位 |
| element.offsetHeight | 返回自身包括 padding,border,content 的高度,不带单位 |
<style>
* {
padding: 0;
margin: 0;
}
.box {
height: 200px;
width: 200px;
background-color: #ccc;
margin: 50px 0 0 50px;
}
</style>
<div class="box"></div>
<script>
let box = document.querySelector(".box");
console.log(box.offsetWidth);
console.log(box.offsetHeight);
console.log(box.offsetTop);
console.log(box.offsetLeft);
</script>
<!-- 输出
200
200
50
50
-->
offset 与 style 的区别
| offset | style |
|---|---|
| offset 可以得到任意样式表中的样式值 | style 只能得到行内样式表中的样式值 |
| offset 系列获取到的数值无单位 | style 获取到的数值为有单位的字符串 |
| offset 包含 border padding content 的宽高 | style 只能得到 content 的宽高 |
| offset 的宽高为只读属性 | style 宽高为可读写属性 |
元素可视区 client 系列
获取元素可是去相关信息
| client 系列属性 | 作用 |
|---|---|
| element.clientTop | 返回元素上边框的大小 |
| element.clientLeft | 返回元素左边框的大小 |
| element.clientWidth | 返回自身包括 padding,内容区的宽度,不包含边框,不带单位 |
| element.clientHeight | 返回自身包括 padding,内容区的高度,不包含边框,不带单位 |
元素滚动 scroll 系列
| scroll 系列属性 | 作用 |
|---|---|
| element.scrollTop | 返回被卷去的上侧距离,不带单位 |
| element.scrollLeft | 返回被卷去的左侧距离,不带单位 |
| element.scrolWidth | 返回自身实际的宽度,不含边框,不带单位 |
| element.scrollHeight | 返回自身实际的高度,不带边框,不带单位 |