BOM
BOM
BOM概述
1.1
浏览器对象模型,,提供独立于内容而与浏览器窗口进行交互的对象,核心对象是window
BOM由一系列相关的对象构成,并且每个对象都提供了很多方法和属性。
1.2
window对象是顶级对象,是JS访问浏览器窗口的一个接口
是一个全局对象,定义在全局作用域中的变量、函数都会变成window对象的属性和方法
注意:window下一个特殊属性 window.name
window对象的常见事件
2.1窗口加载事件
1.window.onload
window.onload=function(){}
或者
window.addEventListener('load',function(){})
window.onload是窗口(页面)加载事件,当文档内容完全加载完成会触发该事件(图像,脚本文件,CSS文件等),就调用的处理函数
注意:
1.有了window.onload就可以把JS代码写到页面元素上方,因为onload是等页面内容全部加载完毕,再去执行函数
2.window.onload传统注册事件只能写一次,多个以最后一个为准
3.如果使用addEventListener则没有限制
2.DOMContentLoaded
document.addEventListener('DOMContentLoaded',function(){})
DOMContentLoaded事件触发时,仅当DOM加载完成,不包括样式表,图片,flash等等
为什么需要它?
如果页面的图片很多,从用户访问到onload触发可能需要较长时间,交互效果不能实现,影响用户体验
2.2调整窗口大小
window.onresize=function(){}
window.addEventListener('resize',function(){})
window.onresize是调整窗口打下加载事件,当触发就调用的处理函数
注意:
1.只要窗口像素发生变化,就会触发这个事件
2.我们经常利用这个事件完成响应式布局。window.innerWidth当前屏幕宽度
定时器
3.1两种定时器
setTimeout()和setInterval()
3.2 setTimeout() 回调函数callback
window.setTimeout(调用函数,[延迟的毫秒数]);
设置一个定时器,该定时器在定时器到期后执行调用函数。
几种方式
//这个调用函数可以直接写函数 还可以写函数名 还有一个写法’函数名()‘
// setTimeout(function(){
// console.log('时间到了');
// },2000)
function callback(){
console.log('baozha');
}
// setTimeout(callback,3000)
setTimeout('callback()',3000);//不提倡
//有很多定时器,需要加上标识符区分
var timer1=setTimeout(callback,3000);
var timer2=setTimeout(callback,5000);//可以同时执行
3.3 停止setTimeout()定时器
window.clearTimeout(timeout ID)
<body>
<button>点击停止定时器</button>
<script>
var btn=document.querySelector('button');
var timer=setTimeout(function(){
console.log('爆炸了');
},3000);
btn.addEventListener('click',function(){
clearTimeout(timer);
})
</script>
</body>
3.4 setInterval()定时器
setInterval(function () {
console.log('持续输出');
},3000)
每隔多少毫秒调用一次这个函数,一直重复调用
3.5 this的指向问题
1.全局作用域或者普通函数中this指向全局对象window(注意定时器里的this指向window)
2.方法调用中谁调用this指向谁
3.构造函数中this指向构造函数的实例
JS执行队列
4.1 JS是单线程
单线程语言,同一个时间只能做一件事
4.2 同步和异步
同步任务
同步任务都在主线程上执行,形成一个执行栈
异步任务
JS的异步通过回调函数实现的
1.普通事件,click,resize
2.资源加载 load,error
3.定时器 settimeout
4.3 JS执行机制
1.先执行执行栈中的同步任务
2.异步任务放入任务队列中
3.一旦执行栈中所有同步任务完成,系统就会按次序读取任务队列中的异步任务,于是被读取的异步任务结束等待状态,进入栈,开始执行
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() | 重新加载页面,相当于刷新按钮,或者f5 如果参数为true强制刷新ctrl+f5 |
navigator对象
history对象
与浏览器历史记录进行交互。该对象包含用户(在浏览器窗口中)访问过得URL
| history对象方法 | 作用 |
|---|---|
| history.back() | 可以后退功能 |
| history.forward() | 前进功能 |
| history.go(参数) | 前进后退功能 参数如果是1 前进一个页面 如果-1后退一个页面 |

浙公网安备 33010602011771号