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);
说明:
- 这两个属性返回的单位是像素
- 这两个属性计算的范围包含滚动条的区域
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)
设置卷去的距离。