本文共 5859 字,大约阅读时间需要 19 分钟。
目录
事件指的是文档或浏览器窗口中发生的一些特定的交互瞬间,也可以理解为:作用在对象上的操作(动作)。
事件是可以被JS监听到的行为。一般在开发中,是通过触发DOM来完成事件操作。
例1:点击box时控制台会进行提示
Document box
或者将方法单独写出也是可以的,但是注意千万不要再在方法名后加()
Document box
EventTarget是一个由可以接收事件的对象来实现接口,并且为它们创建监听器。
三个接口:
语法:DOM.addEventListener(type,listener[,useCapture])
type:事件名 listener:监听函数 useCapture:是否为事件捕获(true/false)默认是false例2:创建addEventListener(),点击box时控制台会进行提示
Document box
与之前的方法不同的是,这里的type可以任意填写,不局限于点击事件,还可以是其余的事件。也可以将它单独写成一个方法,需要什么事件,将事件名当参数传进去即可。
语法:DOM.removeEventListener(type,listener[,useCapture])
type:事件名 listener:监听函数 useCapture:是否为事件捕获(true/false)例3:添加removeEventListener(),点击box时控制台不会进行提示
Document box
removeEventListener()就是和addEventListener()相辅相成
语法:DOM.dispatchEvent(event)
event:用户自定义事件例4:创建自动触发用户的自定义事件
Document
自动触发顾名思义就是程序会自动执行,不需要用户进行其他不必要的操作
例5:onload()事件
方法一
Document box
方法二
Document box
方法三
Document box百度
以上三种方式的返回结果都是相同的
例6:onunload()事件
Document box
例7:onabort()事件
Document box
例8:onerror()事件
Document box
例9:onselect()事件
Document
例10:onresize()事件
Document
例11:onscroll()事件
Document
例12:onfocus和onblur事件的结合使用
Document
例13:onfocusin和onfocusout事件的结合使用
Document
例14:使用onclick事件
Document box
例15:使用ondblclick事件
Document box
例16:onmousedown和onmouseup事件结合使用
Document box
例17:使用onmousemove事件
Document
如果多个元素之间是一个包含的关系,且绑定同一个事件,移到子元素上,父元素上绑定的事件也会触发,它是由子元素向父元素触发,这种情况我们叫它为事件冒泡,说白了事件冒泡就是子发生父必发生
例18:onmouseover和onmouseout事件结合使用
Document
例19:onmouseenter和onmouseleave事件结合使用
Document
需要注意的是火狐并不支持onmousewheel,而是要使用mousescroll实现
Document
例20:使用onkeydown事件
Document
例21:使用onkeypress事件
Document
注意:onkeydown和onkeyup一般用来获取按下的键的键值,功能键也有键值,不区分字母大小写;onkeypress用来获取输入的字符的ASCII码值,不识别功能键,区分字母大小写
事件发生之后,全产生一个事件对象,作为参数传给监听函数。浏览器的原生提供一个Event对象,所有的事件都是这个对象的实例。
语法:new Event(type,option)
type:事件名(一般是用户自定义的)
option:事件对象的配置,有两个重要的参数: bubbles:true/false,是否允许冒泡 cancelable:true/false,表示事件是否可取消例22:创建一个事件对象
Document text
e.target: 获取当前事件触发的DOM节点
e.type:当前触发的事件名(只读) e.eventPhase:返回当前事件所处的阶段(只读) 0:事件没有产生 1:处于捕获阶段 2:事件到达了目标点 3:事件处于冒泡阶段 e.cancelable:表示事件是否可以取消(只读) e.preventDefault():阻止默认形为 e.stopPropagation():阻止冒泡var e = event || window.event
例23:测试event对象兼容写法
Document 事件对象
event.target || event.srcElement
例24:测试event目标对象兼容写法
Document 事件对象
event.preventDefault ? event.preventDefault() : event.returnValue = false
例25:测试阻止默认形为兼容写法
Document 百度
event.stopPropagation ? event.stopPropagation() : event.cancelBublle = true
例26:测试阻止冒泡的兼容写法
Document
screen.width //屏幕的宽
screen.height //屏幕的高 screen.availWidth //屏幕可用宽度 屏幕的像素高度减去系统部件高度之后的值 screen.availHeight //屏幕可用高度 屏幕的像素宽度减去系统部件宽度之后的值(不包含任务栏的高度)window.screenTop //窗口顶部距屏幕顶部的距离
window.screenLeft //窗口左侧距屏幕左侧的距离 window.innerWidth //窗口中可视区域(viewpoint)的宽 window.innerHeight //窗口中可视区域(viewpoint)的高度 该值与浏览器是否显示菜单栏等因素有关 window.outerWidth //浏览器窗口本身的宽度(可视区域宽度+浏览器边框宽度) window.outerHeight //浏览器窗口本身的高度注意:chrome在最大化时浏览器窗口没有边框宽度,非最大化时有8px边框、火狐和IE上下左右有8px的边框宽度
盒子真实大小:
boxWidth = 2*margin + 2*border + 2*padding + width boxHeight = 2*margin + 2*border + 2*padding + heightclientWidth :在页面上返回内容的可视宽度(不包括边框,边距或滚动条)
clientWidth = 2*padding + width - scrollbarWidthclientHeight:在页面上返回内容的可视高度(不包括边框,边距或滚动条)
clientHeight = 2*padding + height - scrollbarHeightoffsetWidth :返回元素的宽度包括边框和填充,但不包括边距
offsetWidth = 2*border + 2*padding + widthoffsetHeight :返回元素的高度包括边框和填充,但不包括边距
offsetHeight = 2*border + 2*padding + heightoffsetLeft: 获取对象相对于版面或由 offsetLeft属性指定的父坐标的计算左侧位置
offsetTop : 获取对象相对于版面或由 offsetTop属性指定的父坐标的计算顶端位置scrollWidth :返回元素的整个宽度(包括带滚动条的隐蔽的地方)
scrollWidth = 2*padding + widthscrollHeight :返回整个元素的高度(包括带滚动条的隐蔽的地方)
scrollHeight = 2*padding + widthscrollTop:向下滑动滚动块时元素隐藏内容的高度。不设置时默认为0,其值随着滚动块滚动而变化
scrollLeft: 向右滑动滚动块时元素隐藏内容的宽度。不设置时默认为0,其值随着滚动块滚动而变化event.clientX:相对可视区域的坐标,以浏览器可视区域左上角为坐标原点到鼠标所在点的水平距离
event.clientY:相对可视区域的坐标,以浏览器可视区域左上角为坐标原点到鼠标所在点的垂直距离event.screenX:相对电脑屏幕的坐标,以屏幕左上角为坐标原点到鼠标所在点的水平距离
event.screenY:相对电脑屏幕的坐标,以屏幕左上角为坐标原点到鼠标所在点的垂直距离event.offsetX:相对于自身的坐标,以自身的padding左上角为坐标原点到鼠标所在点的水平距离
event.offsetY:相对于自身的坐标,以自身的padding左上角为坐标原点到鼠标所在点的水平距离转载地址:http://nfvrn.baihongyu.com/