BOM:是简称,全称 browser object model - 浏览器对象模型

390 阅读6分钟

Java Script:

js的组成部分

1.ECMAScript----描述了js语言基本语法,数据类型的标准

2.DOM-(Document Object Model)-----文档对象模型:操作网页元素的一系列方法

3.BOM-(Brower Object Model)----浏览器对象模型操作网浏览器的一系列方法

一、BOM

所谓对象模型,指的是用对象来描述的一个结构。

BOM意思是通过对象组成的结构来操作浏览器的。

2、浏览器的历史记录

历史记录的操作是window的子对象history。可以操作网页的前进和后退。

history.back(); # 返回到上一个页面,相当于浏览器的后退按钮
history.forward(); # 前进到下一个页面(下一个页面必须是点击以后的页面),相当于浏览器的前进按钮
history.go()
// console.log(window);
// 全局中的this代表window

// window代表浏览器窗口,window代表全局

// var a = 10
// var aaa = 20
// console.log(window);
// 我们在全局中定义的变量,都是window的属性

// console.log(a);
// console.log(window.a);

// function a() {
//     console.log(666);
// }
// console.log(window);
// // 全局中定义的方法属于window的方法

// a()
// window.a()

// 因为我们全局中所有的变量和函数都需要使用window,其他子对象使用的时候也需要使用window
// 既然所有的操作都需要用window,为了简便,我们就可以省略window

3、浏览器的地址栏信息

浏览器的地址栏操作,window对象交给了自己的子对象location对象去处理。

console.log(location.hash); // 设置或返回从#开始的url --- 锚点
console.log(location.href); // 设置或返回完整的的url
console.log(location.search); // 设置或返回url中的参数部分

方法:

语法:
    location.assign("要跳转的地址"); # 这个方法是设置要跳转的地址
    location.reload(); # 重新加载本页面
    location.replace() # 使用新地址替换掉旧地址(跳转)

4、浏览器的弹出层

window.alert("恭喜你!");
window.prompt("请输入数字:",1);
window.confirm("你确定要删除吗?")

5、浏览器窗口尺寸

innerWidth属性:获取浏览器窗口大小 console.log(innerWidth);

innerHeight属性console.log(innerHeight);

  • window.innerHeight - 浏览器窗口的高度
  • window.innerWidth - 浏览器窗口的宽度
var w = window.innerWidth;
console.log(w);
var h = window.innerHeight;
console.log(h);

说明:

  1. 这两个属性返回的单位是像素
  2. 这两个属性计算的范围包含滚动条的区域

6、浏览器的事件

onload事件:当网页中的所有资源都加在完成之后执行这个事件

window.onload = function(){
    console.log("当网页中所有资源加载完成才打印");
}

使用说明:通常是将script标签放到head标签中的时候使用。因为放在head中默认是获取不到body中的内容的,但是有了这个事件后,就可以了。

onscroll 滚动事件:当网页滚动条的位置发生改变的时候触发这个事件

window.onscroll = function() {
    console.log(666);
}
window.onscroll = function () {
  console.log('浏览器滚动了')
}

使用说明:浏览器要有滚动条才行。

浏览器窗口改变事件:resize

window.onresize = function() {
//     console.log(innerWidth, innerHeight); // 当浏览器的窗口大小发生改变的时候触发这个事件
}

7、定时器

setInterval:每隔一段时间,就执行函数代码,不停的执行下去

window.setInterval(函数, 毫秒数) 每隔指定的毫秒数,就执行函数一次,不停的执行 返回这个定时器在页面是第几个

利用返回值,可以停止定时器 - clearInterval(返回值)
*/

// setTimeout:让函数延迟一段时间执行,只会执行一次
/*
语法:
window.setTimeout(函数, 毫秒数)
让函数在毫秒数后执行一次就停了

返回这个定时器在页面中是第几个
利用返回值,可以停止定时器 - clearTimeout(返回值)
*/

延迟执行:

var timerId = setTimeout(function () {
  console.log('我执行了')
}, 1000)
console.log(timerId) // 1

使用说明:第一个参数是要执行的函数,第二个参数延迟的时间(单位毫秒)。返回一个数字,表示当前页面中第几个定时器。

每间隔一段时间执行:

var timerId = setInterval(function () {
  console.log('我执行了')
}, 1000)

使用说明:第一个参数是要执行的函数,第二个参数是间隔的时间(单位毫秒)。返回一个数字,表示当前页面中第几个定时器。

关闭定时器:

定时器返回的数字,就是用来关闭定时器的

clearTimeout(timerId); // 关闭延迟执行的定时器
clearInterval(timerId); // 关闭间隔执行的定时器

使用说明:其实这两个方法可以混用。

var timerId = setTimeout(function () {
  console.log('倒计时定时器')
}, 1000)
// 关闭延迟执行定时器
clearInterval(timerId)
​
var timerId2 = setInterval(function () {
  console.log('间隔定时器')
}, 1000)
// 关闭间隔定时器
clearTimeout(timerId2)

8、异步操作

异步和同步的概念 `1.同步意思是同一时间只能做一件事情,多件事情需要排队按照顺序执行。异步就是同一时间可以做多件事情。

2.我们平常写的代码都是同步代码,定时器我们接触到的第一个异步代码。

3.js的特点是单线程的,也就是同一时间只能做一件事情,所以js会将异步代码交给浏览器去处理,因为浏览器是多线程的。

js的线程,会先将所有同步代码执行完,与此同时,浏览器也在处理异步代码(例如正在等待时间),当浏览器中的异步代码到了应该执行的时候了,会将需要执行的异步代码放在一个队列中,进行排队等候;当js线程将所有同步代码执行结束后,会从队列中拿出第一个需要执行的代码去执行,执行过一个以后,再次到队列中拿出第二个需要执行的代码去执行。。。。

js的异步操作,是在所有同步代码执行完成以后才执行异步代码

一般情况代码是按顺序执行的,上一行代码执行结束之前,下一行代码一直在等待,这是同步机制

异步代码是等待同步代码都执行完成以后,才运行异步代码

9、窗口控制

9.1、打开新的窗口

语法:

window.open(url, 窗口名称, 窗口风格)

参数说明:

如果url为空,会打开一个空的标签页;url不为空,就打开目标url页面
窗口名称是一个字符串
窗口风格:
    height:窗口高度,数字,不能小于100
    width:窗口高度,数字,不能小于100
    left:窗口左边距离,数字
    top:窗口上边距离,数字

返回新窗口的window

btn.onclick = function() {
    // 窗口控制
    // window.open() // 新打开一个标签页
    // window.open('http://baidu.com') // 新打开一个标签页
    // window.open('http://baidu.com', 'bd', {
    //     width: 520,
    //     height: 300,
    //     left: 200,
    //     top: 100
    // }) // 新打开一个标签页

    // 关闭窗口
    // window.close()


    // 控制滚动条位置
    // window.scrollTo(200, 0)
    window.scrollTo(200, 500)
}

9.2、关闭窗口

语法:

window.close()

9.3、设置窗口滚动

语法:

window.scrollTo(x, y)

设置卷去的距离。