BOM
1.BOM简介
BOM是浏览器对象模型,它提供了独立于内容而浏览器窗口进行交互的对象,核心是window;
BOM由一系列相关的对象构成,每个对象有很多方法和属性;
BOM包含DOM;
window包括(document, location , navigation , screen , history);
2.顶级对象window
window对象是浏览器顶级对象;
1.它是js访问浏览器窗口的一个接口;
2.它是一个全局对象,定义在全局作用域中的变量,函数都会成为window对象的属性和方法;
3.window对象事件
3.1页面加载事件(两种)
3.11
window.onload = function(){}
或者window.addEventerListener('load',function(){})
window.load
是窗口加载事件,当文档内容加载完毕会触发该事件(包括图像,脚本文件,…),就调用的函数;
注意:
1.用
window.load
可以把js代码写到页面元素上方,由于onload
是等页面内容全部加载完毕,再去执行处理函数;
2.
window.load
传统的注册事件方式只能写一次,如果有多个,会以最后一个window.onload
为准;
3.使用
addEventListener
没有限制;
3.12(ie9+支持)
document.addEventListener('DOMContentLoaded',function(){})
DOMContentLoaded
事件触发时,仅当DOM加载完毕,不包括样式表,图片,flash…;
如果页面的图片很多的话, 从用户访问到
onload
触发可能需要较长的时间, 交互效果就不能实现,必然影响用户的体验,此时用 DOMContentLoaded
事件比较合适;
3.2调整窗口大小事件
window.onresize = function({})
window.addEventListener('resize',function(){})
window.onresize
是调整窗口大小加载事件,当触发就调用的处理函数;
只要窗口大小发生像素变化就会触发该事件;
这个事件经常用在响应式布局
window.innerWidth
当前屏幕宽度;
4.定时器(两个)
4.1
setTimeout()
window.setTimeout(调用函数,[延迟的毫秒数])
;
setTimeout()
这个调用函数也被称为回调函数 callback;
注意:
1.
window
可以省略;
2.这个调用函数可以直接写函数,或者写函数名或者字符串 ‘函数名()’ 三种形式;
3.延迟毫秒数省略默认是0, 如果写,必须是毫秒数;
4.由于定时器可能要用到很多,记得给定时器赋值一个标识符;
停止定时器
window.clearTimeout(timeoutID)
clearTimeout()
方法取消了前边通过调用setTimeout()
建立的定时器;
【js BOM】注意:
1.
window
可以省略;
2.里面的参数就是定时器的标识符;
4.2
setInterval()
定时器 window.setInterval(回调函数, [间隔的毫秒数]);
setInterval()
方法重复调用一个函数,每个这个时间,就去调用一次回调函数;
注意:
1.window可以省略;
2.这个调用函数可以直接写函数,或者写函数名或者字符串 ‘函数名()’ 三种形式;
3.延迟毫秒数省略默认是0, 如果写,必须是毫秒数,表示每隔多少毫秒就自动调用这个函数;
4.因为定时器可能有很多,记得给定时器赋值一个标识符;
5.第一次执行也是间隔毫秒数之后执行,之后每隔毫秒数就执行一次;
停止定时器
window.clearInterval(intervalID);
clearInterval()
方法取消了先前通过调用setInterval()
建立的定时器;
注意: window可以省略; 里面参数就是定时器的标识符;
倒计时
>
span {
display: inline-block;
width: 50px;
height: 50px;
background-color: #000;
color: #fff;
line-height: 50px;
text-align: center;
}.box {
width: 300px;
height: 100px;
margin: 100px auto;
}
class="days">天
class="hours">时
class="minutes">分
class="seconds">秒
>
var box = document.querySelector('.box');
var day = box.children[0];
var hours = box.children[1];
var minutes = box.children[2];
var seconds = box.children[3];
function countDown() {
//当前时间距离1970的毫秒数
var date = +new Date();
//目标时间
var now = +new Date('2099-11-11 00:00:00');
var leadTime = (now - date) / 1000;
var d = parseInt(leadTime / 60 / 60 /24);
var h = parseInt(leadTime / 60 /60 % 24);
var m = parseInt(leadTime / 60 % 60);
var s = parseInt(leadTime % 60);
d = d < 10 ? '0' + d : d;
h = h < 10 ? '0' + h : h;
m = m < 10 ? '0' + m : m;
s = s < 10 ? '0' + s : s;
day.innerHTML = d ;
hours.innerHTML = h ;
minutes.innerHTML = m;
seconds.innerHTML = s ;
}
countDown();
setInterval(countDown,1000);
5.this指向
this的指向在函数定义的时候确定不了,只有函数执行的时候才能确定this到底指向谁,一般情况下this的最终指向的是哪个调用它的对象;
1.全局作用域或者普通函数中this指向全局对象window;
2.定时器里边的this指向window;
3.方法调用中谁调用this指向谁;
4.构造函数中this指向构造函数的实例;
6.loaction对象
location属性用于获取或者设置窗体的URL,并且可以用于解析URL,这个属性返回的是一个对象,也被称为location对象;
6.1URL URL:统一资源定位符(Uniform Resource Locator,URL)是互联网标准资源的地址,互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件位置以及浏览器应该怎么处理它;
组成
protocol:通信协议常用的是http, ftp , maito......;
host:主机(域名) ;
port:端口号可选,省略时使用的方案的默认端口http的默认端口为80;
path:路径由零或多个'/'符号隔开的字符串,一般用来表示主机上的一个目录或文件地址;
query:参数以键值对的形式,通过&符号分开;
fragment:片段 #后面内容常用于链接 锚点;
6.2 location对象的属性
location.href获取或者设置整个URL;
location.host返回主机(域名);
location.port返回端口号 如果未填写 空字符串;
location.pathname 返回路径;
location.search返回参数;
location.hash返回片段 #后面内容常用于链接 锚点;
6.3 location对象常见方法
location.assign() 跟href一样,可以跳转页面(也被称为重定向页面);
location.replace() 替换当前页面,不记录历史,不能后退页面;
location.reload() 重新加载页面,相当于刷新按钮或者 f5如果参数为true 强制刷新;
7.navigator 对象
navigator 对象包含有关浏览器的信息;
判断用户用哪个终端打开页面,实现跳转;
if((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i))) {
window.location.hrefhttps://www.it610.com/article/= "";
//手机
} else {
window.location.hrefhttps://www.it610.com/article/= "";
//电脑
}
8.history对象
用于与浏览器历史记录进行交互,该对象包含用户(在浏览器串口中) 访问过的URL;
8.1 history对象方法
back()可以后退功能;
forward() 前进功能;
go(参数)前进后退功能参数如果是 1 就前进一个页面 如果是-1 后退一个页面;
推荐阅读
- 操作系统|[译]从内部了解现代浏览器(1)
- web网页模板|如此优秀的JS轮播图,写完老师都沉默了
- JavaScript|vue 基于axios封装request接口请求——request.js文件
- vue.js|vue中使用axios封装成request使用
- JavaScript|JavaScript: BOM对象 和 DOM 对象的增删改查
- JavaScript|JavaScript — 初识数组、数组字面量和方法、forEach、数组的遍历
- JavaScript|JavaScript — call()和apply()、Date对象、Math、包装类、字符串的方法
- JavaScript|JavaScript之DOM增删改查(重点)
- javascript|vue使用js-xlsx导出excel,可修改格子样式,例如背景颜色、字体大小、列宽等
- javascript|javascript中的数据类型转换