一文了解js中BOM操作与三大系列

80 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第21天,点击查看活动详情

BOM

浏览器对象模型

提供了独立于内容耳语浏览器窗口进行交互的对象

核心对象是window

alert() prompt()

 

window页面窗口加载事件

当文档内容完全加载完成会触发该事件(图像,脚本文件,css文件)

只能写一次

window.onload = function () {

}

没有限制

window.addEventListener("load", function () {

})

DOMContentLoaded事件触发时,仅当DOM加载完成,不包括样式表图片,flash ie9以上才支持

document.addEventListener('DOMContentLoaded',function () {})

 

调整窗口大小事件

window.onresize = function() {}

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

window.innerWidth 当前屏幕的宽度

 

91.this指向问题

1.全局作用域或者普通函数中this指向全局对象window 定时器指向window

2.方法调用中谁调用this指向谁

3.构造函数中this指向构造函数的实例

 

location对象

获取和设置窗体的url,用于解析url

location.href 获取或者设置整个URL

host 主机

port 端口

pathname 路径

search 返回参数

hash 返回片段 #后面内容,常见于链接 锚点

 

对象方法

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

location.repalce()替换当前页面,因为不记录历史,所以不能后退页面

location.reload() 重新加载页面,相当于刷新或者f5,参数为true,强制刷新ctrl+f5

 

获取url参数

// ?id=1

var params = location.search.substr("1");

var arr = params.split('=');

history

back()后退功能

forward()前进功能

go(参数) 参数为1,前进1个页面,如果是-1,后退1个页面

元素偏移量offse系列

element.offsetParent 返回该元素带有定位的父级元素,没有返回body

offsetTop 返回元素相对带有定位父元素上方的偏移

offsetLeft

offsetWidth padd ing+border+width 不带单位

offsetHeight

模态框拖拽,

 

元素可视区client

element.clientTop 返回元素上边框的大小

element.clientLeft

clientWidth padding+width 不带单位

clientHeight

 

立即执行函数

(function() {})() 或者(function(){}())

主要作用:创建一个独立的作用域,,所有变量都是局部变量避免了命名冲突

 

三个事件会触发load事件

a标签的链接

f5或者刷新按钮(强制)

前进后退按钮(火狐不可以,有个往返缓存,内存中还保存着DOM和javascript的状态)

windwo.addEventListener('load', function () {

})

window.addEventListener('pageshow',function (e) {

if(e.persisted) {

//是否来自于缓存

}

})

 

元素scroll系列

scrollTop 返回被卷去的上侧距离

scrollLeft 返回被卷去的左侧距离

scrollWidth 返回自身实际的宽度,不包含边框

scrollHeight 文章实际的高度,包括超出部分

window.pageYoffset 页面被卷去的头部

 

100.mouseenter和mouseover的区别 鼠标经过触发

mouseover 经过自身盒子会触发,经过子盒子还会触发 mouseout

mouseenter 只经过自身盒子会触发 mouseleave鼠标离开 不冒泡

 

mousedown 鼠标按下触发

mouseup 鼠标弹起触发

mousemove 鼠标按下触发