9.14 冯娜
学习日志
今天复习了上上周所学的知识点。学习了screen,event。
一、screen
包含有关客户机显示屏幕的信息。
1、screen.width/height
返回显示屏幕的宽度与高度。
2、screen.availWidth/availHeight
去掉任务栏之后剩余的可用大小。
3、screen.availWidth
返回显示屏幕的宽度(除windows任务栏之外)。
4、screen.availHeight
返回显示屏幕的高度(除windows任务栏之外)。
5、screen.updateInterval
返回显示屏幕的刷新频率。
6、screen.colorDepth
返回显示屏幕的色深。
二、event
1、绑定:
(1)在HTML中,html:<any on事件名="函数(this)"
js:function 函数(any){...}
问题:不符合内容与行为分离的要求,不便于维护。
(2)在js中动态绑定:
a、一个事件仅绑定一个处理函数:
elem.on事件名=function(){
//this->elem
}
问题:一个事件只能绑定一个处理函数,不能被remove移除。
b、一个事件可绑定多个处理函数:
elem.addEventListener("事件名",fn);
elem.removeEventListener("事件名",fn)
2、事件模型:
(1)DOM:捕获、目标触发、冒泡三个阶段。
(2)IE8:没有捕获阶段,只有两个阶段。
3、事件对象:
(1)什么是事件对象:事件发生时自动创建;封装事件信息的;并提供操作事件的API的对象。
(2)获取:事件对象默认作为处理函数的第一个参数传入。
(3)操作:a、取消冒泡/停止蔓延
function(e){
e. stopPropagation();
}
b、利用冒泡:
问题:浏览器触发事件,采用的是遍历所有事件监听对象的方式;如果事件监听越 多,遍历时间越长,响应事件就越慢。
优化:尽量少的添加事件监听。
使用:如果多个平级子元素绑定相同的事件监听,则只需在父元素绑定一次,所有子 元素共用。
2个难题:如何获得目标元素:e.target,不随冒泡而改变。
如何筛选目标元素:元素名nodeName;选择器。
c、取消事件/阻止默认行为:e.preventDefault();
什么时候使用:阻止<a href="#xxx" 修改url;在表单的onsubmit事件结尾阻止表单 提交;用H5拖拽API,需要先禁用浏览器默认的拖拽行为。
d、事件坐标:相对于屏幕左上角:e.screenX/screenY。
相对于文档显示区左上角:e.clientX/clientY。
相对于触发事件原色的左上角:e.offsetX/offsetY。
4、页面滚动:
(1)事件:window.onscroll。
(2)获得页面滚动过的高度:document.body.scrollTop、document.documentElement.scrollTop。
(3)方法:window.scrollBy(left的增量,top的增量)、window.scrollTo(left,top)。
评论