前言
- JS是前端三件套之一,也是核心,本人将会更新JS基础、JS对象、DOM、BOM、ES6等知识点,这篇是BOM;
- 这篇文章是本人大一学习前端的笔记;
- 欢迎点赞 + 收藏 + 关注,本人将会持续更新。
文章目录
-
- BOM
-
- 1、BOM概述
- 2、window对象的常见事件
- 3、定时器
-
- 3.1、setTimeout()定时器
- 3.2、clearTimeout()停止定时器
- [3.3、setInterval() 定时器](#3.3、setInterval() 定时器)
- 3.4、clearInterval()停止定时器
- 3.5、this指向
- 发送信息案例
- 4、JS执行机制
- 5、location对象
- 6、navigation对象
- 7、history对象
BOM
1、BOM概述
- BOM :是浏览器对象模型
- 对象核心是window
DOM | BOM |
---|---|
文档对象模型 | 浏览器对象模型 |
DOM就是把文档当中一个对象 | 把浏览器当作一个对象 |
DOM的顶级对象是document | BOM的顶级对象是 window |
DOM主要学习的是操作页面的元素 | BOM学习的是浏览器交互的一些对象 |
兼容性好 | 兼容性较差 |
- BOM包含DOM
- window对象是浏览器的顶级对象,它具有双重角色
2、window对象的常见事件
2.1、窗口加载事件
window.onload 是窗口页面加载事件,把文档内容完全加载完全会出阿飞该事件(包括图像,脚本文件,css文件等),就调用函数
js
//1.
window.onload = function() {
};
//2.
window.addEventListener("load",function() {});
- 有了window.onload 就可以把js代码写到元素的上方
- 如果由多个window.onload,就以第一个为准
- 如果使用addEventListener则没有限制
js
document.addEventListener('DOMContentLoaded',function() {});
- DOMContentLoaded事件触发时,仅当DOM加载完成,不包括样式表,图片,flash等
- 如果页面图片多的话,访问到onload触发可能较长时间
2.1.1、区别
- load等页面内容全部加载完毕后,包括页面dom元素,图片,flash,css等
- DOMContentLoaded 是DOM加载图片,不包括页面dom元素,图片,flash,css等,加载速度比load快一点
js
window.addEventListener('load',function() {
alert(22);
})
document.addEventListener('DOMContentLoaded',function() {
alert(33);
})
2.2、调整窗口大小事件
window.onresize是调整窗口大小加载事件,当触发时就调用的函数
js
window.onresize = function() {
}
window.addEventListener('resize',function() {
})
- 只要窗口大小发送像素变化,就会触发这个事件
- 经常用这个事件完成响应布局。window.innerWidth 当前屏幕的速度
html
<body>
<script>
window.addEventListener('load',function() {
var div = document.querySelector('div');
window.addEventListener('resize',function() {
if(window.innerWidth <= 800){
div.style.display = 'none';
} else {
div.style.display = 'block';
}
})
})
</script>
<div>
box
</div>
</body>
3、定时器
window 对象提供了两个定时器
- setTimeout( )
- setInterval( )
3.1、setTimeout()定时器
**setTimeout()**方法用于设置一个定时器,该定时器在定时器到期后执行调用函数。
js
window.setTimeout(调用函数,延迟毫秒数)
注意:
- window可以省略
- 调用这个函数
- 可以直接写函数名
- 延迟的毫秒数省略默认的是0,如果写,必须是毫秒
- 因为定时器很多,说以经常给定时器赋值一个标识符
setTimeout()
这个调用函数也称为回调函数callback
js
function callback() {
console.log('爆炸了');
}
var time1 = setTimeout(callback,3000);
var time2 = steTimeout(callback,5000);
3.2、clearTimeout()停止定时器
clearTimeout
方法取消了先前通过调用setTimeout()
建立的定时器
js
window.clearTimeout(timeoutID)
//timeoutID 是定时器的标识符
注意:
window
可以省略
3.3、setInterval() 定时器
setInterval
方法重复调用一个函数,每隔这个时间,就去调用一次回调函数
js3
window.setaInterval(回调函数,间隔的毫秒数);
- window 可以省略
- 注意 :
第一次
执行也是间隔毫秒数之后
3.4、clearInterval()停止定时器
claerInterval( )
方法取消了先前通过调用setInterval()
建立的定时器
注意:
window
可以省略- 里面参数就是标识符
3.5、this指向
this
的指向在函数定义的时候确定不了的,只有函数执行的时候才能确定this指向谁- 全局变量或者普通函数中
this
指向全局对象window
发送信息案例
html
<body>
<input type = 'number'> <button>发送</button>
<script>
var btn = document.querySetector('button');
var time = 60;
btn.addEventListener('click',function() {
this.disabled = 'true';
var timer = setInterval(function() {
if(time == 0) {
clearInterval(timer);
this.disabled = 'flase';
this.innerHTML = '发送';
} else {
this.innerHTML = '还剩下' + time + '秒';
time--;
}
},1000);
})
</script>
</body>
4、JS执行机制
4.1、JS是单线程
- 简单理解,
同一时间只能做一件事情
。
4.2、一个问题
js
//1.
console.log(1);
setTimeout(function(){
console.log(3);
} ,1000);
console.log(2);
//2.
console.log(1);
setTimeout(function() {
console.log(3);
},0);
console.log(2);
结果:1 2 3
4.3、同步与异步
同步
:- 前一个任务结束在执行下一个
异步
:- 在做这件事的同时,你还可以去处理其他事情
- JS中的异步是通过回调函数实现的
- 异步任务类型:
- 普通事件,如:
click
,resize
等 - 资源加载,如:
load
,error
等 - 定时器,包括
setTnterval
,setTimeout
等
- 普通事件,如:
5、location对象
- window提供了
location
属性**用于获取或者设置窗体的url,并且解析url。
5.1、url
统一资源定位符
url语法一般为:
js
protocol://host[:port]/path/[?query]#fragment
http://www.itcast.cn/index.html?name=andy&age=18#link
组成 | 说明 |
---|---|
protocol | 通信协议,常用的http,ftp,maito等 |
host | 主机(域名)www.itheima.com |
port | 端口号,可选 |
path | 路径由零或者多个'/'符号隔开的字符串 |
query | 参数以键值的形式,通过& 符号分开 |
fragment | 片段# 后面内容,常用于描点链接 |
5.2、location对象属性
location对象属性 | 返回值 |
---|---|
location.href | 获取或者设置整个url |
location.host | 返回主机(域名)www.baidu.com |
location.port | 返回端口号,如果未写就返回空字符串 |
location.pathname | 返回路径 |
location.search | 返回参数 |
loacation.hash | 返回片段,#后面内容常见于链接 |
重点记住:href
和search
5.3、location对象方法
location对象方法 | 返回值 |
---|---|
location.assign() | 和href一样,可以跳转页面(也称为页面重启向页) |
location.replace() | 替换当前页面 |
location.reload() | 重新加载页面 |
6、navigation对象
- navigator对象包含有关浏览器,他有很多属性
- 我们常用的是userAgent
js
if((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i))) {
window.location.href = ""; //手机
} else {
window.location.href = ""; //电脑
}
7、history对象
- window对象提供了一个history对象,与浏览器历史记录进行交互
history对象方法 | 作用 |
---|---|
back() | 可以后退功能 |
forward() | 前进功能 |
go(参数) | 前进后退功能,参数如果是1 前进1 , |
html
<body>
<a href = "list.hrml">列表</a>
<button>
前进
</button>
<script>
var btn = document.querySelector('button');
btn.addEventListener('click',function() {
history.go(1);
})
</script>
</body>