bom浏览器对象模型

    bom由一系列相关的对象构成并且每个对象都提供了很多方法属性
    bom顶级对象是window
    bom是浏览器产商在各自浏览器上定义的,兼容性差
    window具有双重角色,他是一个全局对象.定义在全局作用域中的变量、函数都会变成window对象的属性和方法,但是在调用的时候可以省略window

窗口加载事件

    window.onload当前页面文档加载完成后会触发该事件,在页面中只能写一次,如果有多个就以最后一个为准
    可以换成window.addEventListener('load',function(){})则没有限制
    如果网页中图片特别多可以用document.addEventListener('DOMContentLoaded',function(){})
    DOMContentLoaded是DOM加载完毕,不包含图片,falsh,css等就可以执行 加载速度比load快一些
  <button>点击</button>
window.onload = function () {
var btn = window.document.querySelector('button')
btn.onclick = function () {
alert('ok')
}
}
window.addEventListener('load', function () {
var btn = window.document.querySelector('button')
btn.onclick = function () {
alert('ok')
}
})

调整窗口大小事件

    window.onresize=function(){} 只要窗口大小发生了变化就会触发该事件
    window.addEventListener('resize',function(){})
  <div class="box">123</div>
var box = document.querySelector('.box')
window.addEventListener('resize', function () {
if (window.innerWidth <= 800) {
box.style.display = 'none'
} else {
box.style.display = 'block'
}
})

两种定时器

window.setTimeout(调用函数,[延迟的毫秒数])

    这个window在调用的时候可以省略
    这个延迟单位是毫秒 默认就是0
    这个调用函数可以直接写函数 还可以写函数名 还有一种方法是setTimeout('fn()', 3000)但是不提倡
    页面中有很多的定时器 我们可以给定时器加标识符
    setTimeout这个函数也叫回调函数callback

注意

 如果页面中有多个定时器在循环使用如果不去除会导致定时器越来越多
  setTimeout(function () {
console.log('ok'); }, [2000]) function fn() {
console.log('okk');
}
var times1 = setTimeout(fn, 3000)
var times2 = setTimeout('fn()', 3000)
     var t = 3000;
fn1()
function fn1() {
imgs[0].style.display = 'block'
imgs[1].style.display = 'none'
imgs[2].style.display = 'none'
times1 = setInterval(fn2, t)
       clearInterval(times3)
} function fn2() {
imgs[0].style.display = 'none'
imgs[1].style.display = 'block'
times2 = setInterval(fn3, t)
clearInterval(times1)
} function fn3() {
imgs[0].style.display = 'none'
imgs[1].style.display = 'none'
imgs[2].style.display = 'block'
times3 = setInterval(fn1, t)
clearInterval(times2)
} })

案例

  <!-- 五秒之后自动关闭广告 -->
<img src="../imges/u=3568135932,2181685849&fm=26&gp=0.jpg" alt="" class="ad">
var ad = document.querySelector('.ad')
setTimeout(function () {
ad.style.display = 'none'
}, 5000)

效果图

停止setTimeout()定时器

    window.clearTimeout(定时器的名称)

案例

  <button class="btn">点击</button>
var btn = document.querySelector('.btn')
var times = setTimeout(function () {
console.log('lll'); }, 6000)
btn.addEventListener('click', function () {
clearTimeout(times)
})
 <button class="begin">开启</button>
<button class="stop">停止</button>
var begin = document.querySelector('.begin')
var stop = document.querySelector('.stop')
var times = null;
begin.addEventListener('click', function () {
times = setInterval(function () {
console.log('你好吗');
}, 1000)
})
stop.addEventListener('click', function () {
clearTimeout(times)
})

效果图

window.setInterval(调用函数,[延迟的毫秒数])

    方法和setTimeout十分相同
    每隔这个延迟时间就去调用这个回调函数,会调用很多次,重复调用这个函数

案例

    <!-- 京东倒计时案例 -->
 <div class="box2">
<span class="hour">1</span>
<span class="minute">2</span>
<span class="second">3</span>
</div>
var hour = document.querySelector('.hour')
var minute = document.querySelector('.minute')
var second = document.querySelector('.second')
var inputTime = +new Date('2020-4-9 18:00:00') conutDown() //先调用一次防止第一次刷新页面有空白 // 开启定时器
setInterval(conutDown, 1000) function conutDown() {
var nowTime = +new Date()
var times = (inputTime - nowTime) / 1000; //剩余时间的秒数
var d = parseInt(times / 60 / 60 / 24) //天
d = d < 10 ? '0' + d : d;
var h = parseInt(times / 60 / 60 % 24) //时
h = h < 10 ? '0' + h : h;
hour.innerHTML = h;
var m = parseInt(times / 60 % 60) //分
m = m < 10 ? '0' + m : m;
minute.innerHTML = m;
var s = parseInt(times % 60) //秒
s = s < 10 ? '0' + s : s;
second.innerHTML = s;
}

效果图

JS 窗口加载与定时器笔记的更多相关文章

  1. AMD加载器实现笔记(二)

    AMD加载器实现笔记(一)中,我们实现了一个简易的模块加载器.但到目前为止这个加载器还并不能称为AMD加载器,原因很简单,我们还不支持AMD规范中的config配置.这篇文章中我们来添加对config ...

  2. 转:web前端面试题合集 (Javascript相关)(js异步加载详解)

    1. HTTP协议的状态消息都有哪些? 1**:请求收到,继续处理2**:操作成功收到,分析.接受3**:完成此请求必须进一步处理4**:请求包含一个错误语法或不能完成5**:服务器执行一个完全有效请 ...

  3. sea.js模块加载工具

    seajs的使用 seajs是一个jS模块加载器,由淘宝前端架构师玉伯开发,它可以解决命名空间污染,文件依赖的问题.可以在一个js文件中引入另外一个js.require('a.js') 1.安装 np ...

  4. js 模版加载到前端

    js 模版加载到前端 简单有效不高端 配个路由 /js/:filename ,  用 readTemplate 响应请求,前端可以按模块方式直接 require 模板 'use strict' var ...

  5. 前端设计中关于外部js文件加载的速度优化

    在一般情况下,许多人都是将<script>写在了<head>标签中,而许多浏览器都是使用单一的线程来加载js文件的,从上往下,从左往右. 若是加载过程出错,那么网页就会阻塞,就 ...

  6. js动态加载以及确定加载完成的代码

    利用原生js动态加载js文件到页面,并在确定加载完成后调用相关function var otherJScipt = document.createElement("script") ...

  7. 第三课:sea.js模块加载原理

    模块加载,其实就是把js分成很多个模块,便于开发和维护.因此加载很多js模块的时候,需要动态的加载,以便提高用户体验. 在介绍模块加载库之前,先介绍一个方法. 动态加载js方法: function l ...

  8. js资源加载优化

    互联网应用或者访问量大的应用,对js的加载优化是不可少的.下面记录几种优化方法 CDN  + 浏览器缓存 CDN(content delivery network)内容分发网络, 最传统的优化方式.其 ...

  9. 判断JS是否加载完成

    在正常的加载过程中,js的加载都是同步的,也就是在加载过程中,浏览器会阻塞接下来的内容的加载.这时候我们就要用到动态加载,动态加载是异步的,如果我们在后边要用到这个动态加载的js文件里的东西,就要保证 ...

随机推荐

  1. Alexnet网络结构

    最近试一下kaggle的文字检测的题目,目前方向有两个ssd和cptn.直接看看不太懂,看到Alexnet是基础,今天手写一下网络,记录一下啊. 先理解下Alexnet中使用的原件和作用: 激活函数使 ...

  2. 模板方法模式(c++实现)

    外观模式 目录 外观模式 模式定义 模式动机 UML类图 源码实现 优点 缺点 模式定义 模板方法模式(Facade),定义一个操作中的算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变 ...

  3. 集训 T4-分配时间

    题目: 思路: 这个题目正解为dp,但是我并不会dp,所以写了个类似于T3的搜索.(然后就70分了 先看一张图: 我的思路是把写名字的时间和写卷子的时间算在了一起(下标表示时间点,比如下标2那一行代表 ...

  4. css :clip rect 正确的使用方法

    CSS clip 是一个极少使用,但又确实存在的属性. 而且,它其实在CSS2时代就有了. w3school 上有这么一句话: clip 属性剪裁绝对定位元素. 也就是说,只有 position:ab ...

  5. SW算法求全局最小割(Stoer-Wagner算法)

    我找到的唯一能看懂的题解:[ZZ]最小割集Stoer-Wagner算法 似乎是一个冷门算法,连oi-wiki上都没有,不过洛谷上竟然有它的模板题,并且2017百度之星的资格赛还考到了.于是来学习一下. ...

  6. python-study-文件操作

    # 一.文件操作的作用 :读取内容.写入内容.备份内容.... # 文件的基本操作,文件操作包含:打开.关闭.读.写.复制.... # 打开 读写 关闭 # 文件备份 # 文件和文件夹的操作 # 总结 ...

  7. WPF入门教程(一)---基础

    这篇主要讲WPF的开发基础,介绍了如何使用Visual Studio 2013创建一个WPF应用程序. 首先说一下学习WPF的基础知识: 1) 要会一门.NET所支持的编程语言.例如C#. 2) 会一 ...

  8. DJANGO-天天生鲜项目从0到1-004-用户模块-个人中心页

    本项目基于B站UP主‘神奇的老黄’的教学视频‘天天生鲜Django项目’,视频讲的非常好,推荐新手观看学习 https://www.bilibili.com/video/BV1vt41147K8?p= ...

  9. EOJ Monthly 2019.11 A(进制转换)

    "欢迎您乘坐东方航空公司航班 MU5692 由银川前往上海......" "我们的飞机很快就要起飞了,请收起小桌板,摘下耳机......" 收起了小桌板,摘下了 ...

  10. Java基础之java8新特性(1)Lambda

    一.接口的默认方法.static方法.default方法. 1.接口的默认方法 在Java8之前,Java中接口里面的默认方法都是public abstract 修饰的抽象方法,抽象方法并没有方法实体 ...