js的组成部分
前面学习的部分是ECMAScript部分,都是基础语法部分。基础语法只是规定的代码如何写,并不能实现很多主流的操作,比如跳转页面,获取浏览器的尺寸等操作。再比如让HTML元素动起来。
所以需要学习BOM来操作浏览器。学习DOM来操作HTML标签。
BOM
BOM是三个单词的首拼--Browser Object Model,即浏览器对象模型。
既然是对象模型,那么所有内容,都是用对象来描述的。
BOM中最大的对象叫window,是浏览器窗口对象。他包含了很多浏览器的操作。
window对象中包含的对象
浏览器的信息
浏览器的名称、版本等信息。关于浏览器的信息,window交给了他的子对象navigator去记录。
console.log(navigator.appCodeName);// 返回浏览器的代码名
console.log(navigator.appName);// 返回浏览器的名称
console.log(navigator.appVersion);// 返回浏览器的平台和版本信息
console.log(navigator.cookieEnabled);// 返回指明浏览器是否启用cookie的布尔值
console.log(navigator.platform);// 返回运行浏览器的操作系统平台
console.log(navigator.userAgent);// 返回由客户机发送服务器的user-agent头部的值
结果:
浏览器信息
使用说明:其实navigator对象是属于window对象的,但是window是所有对象的顶级对象,所以通常在写的时候,可以省略掉window。
浏览器的历史记录
历史记录的操作是window的子对象history。可以操作网页的前进和后退。
history.back();# 返回到上一个页面,相当于浏览器的后退按钮
history.forward();# 前进到下一个页面(下一个页面必须是点击以后的页面),相当于浏览器的前进按钮
history.go()
浏览器的地址栏信息
浏览器的地址栏操作,window对象交给了自己的子对象location对象去处理。
console.log(location.hash);// 设置或返回从#开始的url --- 锚点
console.log(location.href);// 设置或返回完整的的url
console.log(location.search);// 设置或返回url中的参数部分
方法:
语法:
location.assign("要跳转的地址");# 这个方法是设置要跳转的地址
location.reload();# 重新加载本页面
location.replace()# 使用新地址替换掉旧地址(跳转)
浏览器的弹出层
window.alert("恭喜你!");
window.prompt("请输入数字:",1);
window.confirm("你确定要删除吗?")
浏览器窗口尺寸
1.window.innerHeight - 浏览器窗口的高度
2.window.innerWidth - 浏览器窗口的宽度
var w=window.innerWidth;
console.log(w);
var h=window.innerHeight;
console.log(h);
说明:
1.这两个属性返回的单位是像素
2.这两个属性计算的范围包含滚动条的区域
浏览器的事件
onload事件:当网页中的所有资源都加在完成之后执行这个事件
window.onload=function(){
console.log("当网页中所有资源加载完成才打印");
}
使用说明:通常是将script标签放到head标签中的时候使用。因为放在head中默认是获取不到body中的内容的,但是有了这个事件后,就可以了。
onscroll 滚动事件:当网页滚动条的位置发生改变的时候触发这个事件
window.onscroll=function() {
console.log('浏览器滚动了')
}
使用说明:浏览器要有滚动条才行。
浏览器窗口改变事件:resize
window.onresize=function(){
// 当浏览器的窗口大小发生改变的时候触发这个事件
}
浏览器滚动的距离
获取文档向下滚动的距离,以下两个都可以:
document.documentElement.scrollTop
document.body.scrollTop
window.onscroll=function() {
vart=document.documentElement.scrollTop;
console.log(t);
vart1=document.body.scrollTop;
console.log(t1);
}
使用说明:这两个的区别在于当前文档有没有doctype,有就用document.documentElement.scrollTop,没有就用document.body.scrollTop
获取页面向右滚动的距离:
1.document.body.scrollLeft
2.document.documentElement.scrollLeft
使用方式同上。
这两个方法在ie和edge下有兼容性问题。
使用兼容写法:
var t=document.documentElement.scrollTop||document.body.scrollTop;
var t=document.documentElement.scrollLeft||document.body.scrollLeft;
滚动距离可以赋值,如果给向上的滚动距离赋值为0,就实现了回到顶部的效果。但效果时瞬间返回,体验感不好。
思考:如果才能让回到顶部有动画的效果?
使用定时器。每隔一段时间让滚动距离减小。
#backTop{
display:none;
width:80px;
text-align:center;
height:30px;
line-height:30px;
border:3pxsolid#000;
position:fixed;
top:500px;
right:50px;
}
一类是以机场为主导,通过与其他机场航空公司或者第三方合作的方式,为在本机场中转的旅客提供服务;第二类是以航司为主导,以代码共享、
通程联运和合作联营的方式,在既定的中转机场,为旅客提供跨航司的行李直挂服务。