2-BOM

'BOM

  • 能说出什么是DOM

  • 能够知道浏览器的顶级对象window(窗口)

  • 能够写出页面加载事件以及注意事项

  • 能够写出两种定时器函数,并说明其区别

  • 能够了解JS执行机制

  • 能够使用location对象完成页面之间的跳转 /(地址栏)

  • 能够使用navigation对象涉及的属性 /(浏览器)

  • 能够使用history提供的方法实现页面刷新 / (历史纪录)

一、概念

1、什么是BOM

  • BOM(browser object model)即浏览器对象模型,它提供了独立于内容和浏览器窗口进行交互的对象,其核心对象是window

(后退、前进页面、刷新页面、浏览器窗口大小发生变化、滚动条滚动)

  • BOM由一系列相关的对象构成,并且每个对象都提供了很多方法和属性

  • BOM缺乏标准,JavaScript语法的标准是ECMA,DOM的标准是W3C,BOM最初是Netscape(美国网景公司)浏览器标准的一部分(兼容性较差)

2、BOM的组成

  • window对象是浏览器的顶级对象,它具有双重角色

    • 他是JS访问浏览器的接口

    • 他是一个全局对象,定义在全局作用域中的变量,函数都会变成window的属性和方法,在调用的时候可以省略,前面学的alert(),prompt()都是window对象的方法

  • 注意;window下的一个特殊属性window.name,所以声明的时候不要取变量名为name,

二、window对象的常见事件

前言:

  • 代码的顺序由上往下执行,所以之前一直让script写在HTML代码下面,代码点击才会触发执行

1、窗口加载事件

(1)、窗口加载事件(1)

window.οnlοad=function(){};

window.addEventListener('load',function(){});

  • window.onload:是窗口(页面)加载事件,当文档内容完全加载完毕就会触发该事件(包括图像,脚本语言,css文件等),就调用里面的函数

注意:

  • 有了window.onload就可以把代码写在页面的任意地方,因为onload是等页面的全部内容都加载完毕后后再取执行吃力函数

  • window.onload传统注册方式只能写一次,如果有多个,会以最后一个window.onload为准

  • 如果使用window.addEventListener('load',function(){}),则没有限制

( 2)、窗口加载事件(2)

window.onDomContentLoaded=functin(){}

window.addEventListener('DomContentLoaded',function(){})

  • DomContentLoaded事件触发时,仅当DOM加载完毕,不包括样式表(css)、图片、flash等等(ie9以上才支持)

  • 如果页面的图片很多的话,从用户访问到onload触发可能需要很长的时间,交互效果就不能实现,必然影响用户的体验,此时用DomContentLoaded事件比较合适

$(document).ready(function(){………………})
$(function(){………………})

2、窗口大小调整事件

  • 这是调整窗口大小加载事件,根据浏览器窗口大小发生变化时,就会触发的一个事件)

window.οnresize=function(){……};

window.addEventListener('resize',function(){……})

注意

  • 只要窗口大小发生像素变化,就会触发这个事件

  • 我们经常利用这个事件完成响应式布局

window.innerwidth //当前屏幕的宽度,包含宽、内边距、边框
window.innerheight

3、定时器事件

window对象提供了两种非常好用定时器方法:setTimeout和setInterval

(1)、设置setTimeout()定时器

定时器异步执行,等外部代码全部执行完毕再执行自己

语法:

window.setTimeout(调用函数,[延迟的毫秒数])
  • setTimeout()方法用于设置一个定时器,该定时器在定时器到期后执行调用函数

  • 这个window在调用的时候可以省略

  • 这个延迟时间单位是毫秒数,还可以写函数,还有一个写法”函数名()“

function callback(){
    console.log('你好')
}
setTimeout(callback,3000)
//或者
setTimeout('callback()',3000)//采用字符串方式,不提倡
  • 页面中可能有很多定时器,我们经常给定时器加标识符(名字),来区分不同的定时器

  • setTimeout()里面的调用函数,我们称之为回调函数

  • 普通函数按照代码顺序直接调用

  • 而定时器里面回调函数,需要等待时间,时间到了才会去调用这个函数

(2)、停止setTimeout()定时器

语法

window.clearTimeout(timeout id)//参数为定时器的名字(标识符)

(3)、setInterval()定时器

语法

window.setinterval(function(){},[时间])
  • window可以省略

  • 这个调用函数可以直接写函数,或者写函数名或者采用字符串的方式来调用(三种方式都可以)

  • 间隔时间是毫秒数单位,如果不写默认是0.如果写必须是毫秒,表示每隔多少毫秒就自动调用这个函数

  • 因为定时器有很多种,所以我们经常会给定时器一个标识符(名字)

(2)、停止setInterval()定时器

window.clearInterval(定时器标识符/名字)

两种定时器的区别

  • set'Timeout(),延迟时间到了,就去调用这个回调函数,只调用一次。就结束了这个定时器

  • setInterval(),每隔这个延迟时间,就去调用这个回掉函数,会调用很多次,重复调用这个函数

DOM对象

1、location对象的方法

地址栏

相关方法:

  • location.href() //跳转页面

  • location.assign()//跟href一样,可以跳转页面(也称重定向页面)

  • location.replace()//替换当前页面,因为不记录历史,所以没有返回键

  • location.reload() //重新加载页面,相当于刷新按钮或F5,如果参数为true为强制刷新(ctrl+F5)

<button>点击</button>
​
var btn=document.queryselector('button');
btn.addEventListener('click',function(){
​
    //记录历史记录,所以可以实现后退功能
    location.assign('http://www.itcast.com')
​
    //2、不记录历史纪录,没有后退功能
    location.replace('http://www.itcast.com')
​
​
    //3、刷新页面
    location.replace(true/false)
​
})

2、navigator对象

  • navigator对象包含有关浏览器的信息,它有很多属性,我们最常用的是userAgent,该属性可以返回由客户机发送服务器user-agent的头部的值

  • 下面代码可以判断用户在哪个终端设备打开页面,实现跳转

  • 前端人员可通过这个属性来进行简单判断,你打开的是移动端页面还是移动端页面

4、history对象

  • back() //可以后退功能

  • forward() //可以前进功能

  • go(参数) //前进后退功能,参数为1,前进一个页面,参数是-1,后退一个页面

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值