20200914-叶梦宇-
学习心得
BOM(兼容性差)
window
代替ES中的global充当全局作用域对象
var a=10;
window.a;
包含所有ES+DOM+BOM的对象和函数
window.Array
window.document
window.alert()
window还代表当前窗口的信息,也能操作当前窗口
完整窗口大小
window.outerWidth
window.outerHeight
仅用于显示网页区域的大小
window.innerWidth
window.innerHeight
关闭窗口
/*window.*/close()
打开窗口
/*window.*/open("url","name")
name
自定义名称
在新窗口打开,只能打开一个
_blank
不指定窗口名,每次都让浏览器生成随机不重复的窗口名,在新窗口打开,可以打开多个
_self
用当前窗口自己的name,打开新连接,新窗口会替换当前窗口,在当前窗口打开,可进退
width
打开新窗口的宽度
height
打开新窗口的高度
toolbar
新窗口是否显示工具栏
yes/1
no/0
titlebar
新窗口是否显示标题栏
yes/1
no/0
left
新窗口距离左边界的像素
right
新窗口距离右边界的像素
menubar
新窗口中是否显示菜单栏
yes/1
no/0
srcollbar
新窗口中是否显示滚动条
yes/1
no/0
fullscreen
新窗口是否全屏显示
yes/1
no/0
resizable
新窗口是否可以调整大小
yes/1
no/0
事件
注意:console.log.dir(元素对象),可以查看元素上绑定 的事件。
一个事件仅绑定一个处理函数
elem.on事件名=function(){
//this->elem
}
问题
一个事件只能绑定一个处理函数
不能被remove移除掉,只能onXXX=null
只能移除由onXXX绑定的事件处理函数
无法移除addEventListener绑定的事件处理函数
一个事件可绑定多个处理函数
elem.addEventListener("事件名",fn);
elem.removeEventListener("事件名",fn)
注意:bom中的标准事件名是没有on的,所以 事件名是不能写on的。click。mouseover等等。
如果一个处理函数可能被移除,在绑定时不能使用匿名函数,必须使用有名的函数
DOM的事件模型的三个阶段
捕获
由外向内, 记录各级父元素绑定的事件处理函数,只记录,不执行
目标触发
优先触发目标元素上的事件处理函数
冒泡
由内向外, 反向依次触发捕获阶段记录的事件处理函数
注意:如何阻止冒泡, function(e){
e. stopPropagation();
}
事件对象
事件发生时自动创建,封装事件信息的,并提供操作事件的API的对象。
事件问题
浏览器触发事件,采用的是遍历所有事件监听对象的方式
如果事件监听越多,遍历时间越长,响应事件就越慢
优化
尽量少的添加事件监听
如果多个平级子元素绑定相同的事件监听,则只需在父元素绑定一次,所有子元素共用
e.target获取子元素
不随冒泡而改变
如何筛选目标元素
元素名nodeName
取消事件/阻止默认行为
e.preventDefault()
什么时候使用?
阻止<a href="#xxx" 修改url
在表单的onsubmit事件结尾阻止表单提交
用H5拖拽API,需要先禁用浏览器默认的拖拽行为
事件坐标
相对于显示屏的左上角(不是网页的)
e.screenX/screenY
相对于网页的左上角
e.clientX/clientY
相对于触发事件元素的左上角
e.offsetX/offsetY
页面滚动
事件
window.onscroll
获得页面滚动过的高度
document.body.scrollTop
document.documentElement.scrollTop
方法
window.scrollBy(left的增量,top的增量)
window.scrollTo(left,top)
鼠标滚动
兼容性不好
不同的浏览器有不同的写法
firefox和IE是向下滚是负数,向上滚动是正数,
事件监听 滚轮事件
谷歌 addEventListener onmousewheel
IE attachEvent onmousewheel
FF addEventListener DOMMouseScroll
谷歌的
window.onmousewheel=document.onmousewheel=function(e){
if(e.wheelDelta>0){
console.log("向上滚动")
}else{
console.log("向下滚动")
}
}
火狐的
document.addEventListener('DOMMouseScroll',function(e){
if(e.detail>0){
console.log("向下滚动")
}else{
console.log("向上滚动")
}
},false)
学习心得
马上就要分班了,以后就更注重前端发展了,马上就要学习更高端的内容了,希望自己能跟上。
近期评论