bom浏览器对象模型
bom由一系列相关的对象构成并且每个对象都提供了很多方法属性
bom顶级对象是window
bom是浏览器产商在各自浏览器上定义的,兼容性差
window具有双重角色,他是一个全局对象.定义在全局作用域中的变量、函数都会变成window对象的属性和方法,但是在调用的时候可以省略window
窗口加载事件
window.onload当前页面文档加载完成后会触发该事件,在页面中只能写一次,如果有多个就以最后一个为准
可以换成window.addEventListener('load',function(){})则没有限制
如果网页中图片特别多可以用document.addEventListener('DOMContentLoaded',function(){})
DOMContentLoaded是DOM加载完毕,不包含图片,falsh,css等就可以执行 加载速度比load快一些
1 <button>点击</button>
2 window.onload = function () {
3 var btn = window.document.querySelector('button')
4 btn.onclick = function () {
5 alert('ok')
6 }
7 }
8 window.addEventListener('load', function () {
9 var btn = window.document.querySelector('button')
10 btn.onclick = function () {
11 alert('ok')
12 }
13 })
调整窗口大小事件
window.onresize=function(){} 只要窗口大小发生了变化就会触发该事件
window.addEventListener('resize',function(){})
1 <div class="box">123</div>
2 var box = document.querySelector('.box')
3 window.addEventListener('resize', function () {
4 if (window.innerWidth <= 800) {
5 box.style.display = 'none'
6 } else {
7 box.style.display = 'block'
8 }
9 })
两种定时器
window.setTimeout(调用函数,[延迟的毫秒数])
这个window在调用的时候可以省略
这个延迟单位是毫秒 默认就是0
这个调用函数可以直接写函数 还可以写函数名 还有一种方法是setTimeout('fn()', 3000)但是不提倡
页面中有很多的定时器 我们可以给定时器加标识符
setTimeout这个函数也叫回调函数callback
1 setTimeout(function () {
2 console.log('ok');
3
4 }, [2000])
5
6
7 function fn() {
8 console.log('okk');
9 }
10 var times1 = setTimeout(fn, 3000)
11 var times2 = setTimeout('fn()', 3000)
案例
1 <!-- 五秒之后自动关闭广告 -->
2 <img src="../imges/u=3568135932,2181685849&fm=26&gp=0.jpg" alt="" class="ad">
3 var ad = document.querySelector('.ad')
4 setTimeout(function () {
5 ad.style.display = 'none'
6 }, 5000)
停止setTimeout()定时器
window.clearTimeout(定时器的名称)
案例
1 <button class="btn">点击</button>
2 var btn = document.querySelector('.btn')
3 var times = setTimeout(function () {
4 console.log('lll');
5
6 }, 6000)
7 btn.addEventListener('click', function () {
8 clearTimeout(times)
9 })
1 <button class="begin">开启</button>
2 <button class="stop">停止</button>
3 var begin = document.querySelector('.begin')
4 var stop = document.querySelector('.stop')
5 var times = null;
6 begin.addEventListener('click', function () {
7 times = setInterval(function () {
8 console.log('你好吗');
9 }, 1000)
10 })
11 stop.addEventListener('click', function () {
12 clearTimeout(times)
13 })
window.setInterval(调用函数,[延迟的毫秒数])
方法和setTimeout十分相同
每隔这个延迟时间就去调用这个回调函数,会调用很多次,重复调用这个函数
案例
<!-- 京东倒计时案例 -->
1 <div class="box2">
2 <span class="hour">1</span>
3 <span class="minute">2</span>
4 <span class="second">3</span>
5 </div>
6 var hour = document.querySelector('.hour')
7 var minute = document.querySelector('.minute')
8 var second = document.querySelector('.second')
9 var inputTime = +new Date('2020-4-9 18:00:00')
10
11 conutDown() //先调用一次防止第一次刷新页面有空白
12
13 // 开启定时器
14 setInterval(conutDown, 1000)
15
16 function conutDown() {
17 var nowTime = +new Date()
18 var times = (inputTime - nowTime) / 1000; //剩余时间的秒数
19 var d = parseInt(times / 60 / 60 / 24) //天
20 d = d < 10 ? '0' + d : d;
21 var h = parseInt(times / 60 / 60 % 24) //时
22 h = h < 10 ? '0' + h : h;
23 hour.innerHTML = h;
24 var m = parseInt(times / 60 % 60) //分
25 m = m < 10 ? '0' + m : m;
26 minute.innerHTML = m;
27 var s = parseInt(times % 60) //秒
28 s = s < 10 ? '0' + s : s;
29 second.innerHTML = s;
30 }
来源:https://www.cnblogs.com/xf2764/p/12658590.html