JS中的事件对象
2017-11-18 12:52
393 查看
在触发DOM上的某个事件时,会产生一个事件对象event,这个对象包括着所有与事件有关的信息。包括导致事件的元素,事件的类型及其他与特定事件相关的信息。例如,鼠标操作导致的事件对象中,会包含鼠标位置的信息,而键盘操作导致的事件中,会包含与按下的键有关的信息。所有浏览器都支持event事件,但支持方式不同。
这两个事件处理程序都引入了一个event对象,弹出由event.type实行表示的事件类型。event对象包含与创建他的特定事件有关的属性和方法。
bubbles:表明事件是否冒泡
cancelable:表明是否可以取消事件的默认行为
currentTarget:其事件处理程序当前正在处理时间的那个元素
eventPhase:调用事件处理程序的阶段:1表示捕获阶段,2表示“处于目标”,3表示冒泡阶段
preventDefault():取消事件的默认行为,如果cancelable为true
stopPropagation():取消事件进一步捕获或冒泡,如果bubbles为true
target:事件的目标
type:被触发事件的类型
在事件处理程序中,this始终指向currentTarget的值,而target则只包含事件的实际目标。来看下面的例子:
当我点击提交按钮后,按钮上没有注册事件处理程序,通过事件冒泡向上寻找到div上找到事件,分别弹出 “div上的事件触发了”“true”“true”“true”。由于click事件的目标是按钮,而事件在div上绑定,因此this和 currentTraget都等于div,而target等于按钮对象。
当我点击红色区域后,分别弹出“div上的事件触发了”“true”“false”“true”。这里改变的是target,由于事件仍然绑定在div上,所以this和 currentTraget不变,而事件的目标变化了,变成个刚才点击的红色区域,也就是div区域,所以target等于div,弹出false。
这个例子定义了一个名为hander的函数,用于处理三种事件:click,mouseover和mouseout。当鼠标移动到按钮上时,触发mouseover事件,背景变成蓝色;点击按钮触发click事件,弹出“clicked”, 鼠标移除按钮,触发mouseout事件,恢复原样。
注意:只有cancelable属性设置为true的事件才可以使用。
**
**
DOM中得事件对象
var btn=document.getElementById("mybtn"); btn.onclick=function(event){ alert(event.type); }; btn.addEventListener("click",function(event){ alert(event.type) })
这两个事件处理程序都引入了一个event对象,弹出由event.type实行表示的事件类型。event对象包含与创建他的特定事件有关的属性和方法。
bubbles:表明事件是否冒泡
cancelable:表明是否可以取消事件的默认行为
currentTarget:其事件处理程序当前正在处理时间的那个元素
eventPhase:调用事件处理程序的阶段:1表示捕获阶段,2表示“处于目标”,3表示冒泡阶段
preventDefault():取消事件的默认行为,如果cancelable为true
stopPropagation():取消事件进一步捕获或冒泡,如果bubbles为true
target:事件的目标
type:被触发事件的类型
① currentTarget,target和this
这里最头疼的就是currentTarget,target和this的区别。在事件处理程序中,this始终指向currentTarget的值,而target则只包含事件的实际目标。来看下面的例子:
//html文档 <div id="box" style="background-color:red ; width:100px; height:100px;"> <input type="button" value="提交" id="mybtn"/> //js var div=document.getElementById("box"); div.onclick=function(event){ alert("div上的事件触发了。") alert("currentTraget等于div吗? "+(event.currentTarget===div)) alert("target等于mybtn吗? "+(event.target===document.getElementById("mybtn"))) alert("this等于div吗? "+(this===div)) }
当我点击提交按钮后,按钮上没有注册事件处理程序,通过事件冒泡向上寻找到div上找到事件,分别弹出 “div上的事件触发了”“true”“true”“true”。由于click事件的目标是按钮,而事件在div上绑定,因此this和 currentTraget都等于div,而target等于按钮对象。
当我点击红色区域后,分别弹出“div上的事件触发了”“true”“false”“true”。这里改变的是target,由于事件仍然绑定在div上,所以this和 currentTraget不变,而事件的目标变化了,变成个刚才点击的红色区域,也就是div区域,所以target等于div,弹出false。
②type属性
通过type属性,可以通过一个函数处理多个事件:var btn=document.getElementById("mybtn"); var hander=function(event){ switch(event.type){ case "click": alert("clicked"); break; case "mouseover": event.target.style.backgroundColor="blue"; break; case "mouseout": event.target.style.backgroundColor=""; break; } } btn.onclick=hander; btn.onmouseover=hander; btn.onmouseout=hander;
这个例子定义了一个名为hander的函数,用于处理三种事件:click,mouseover和mouseout。当鼠标移动到按钮上时,触发mouseover事件,背景变成蓝色;点击按钮触发click事件,弹出“clicked”, 鼠标移除按钮,触发mouseout事件,恢复原样。
③ perventDefault()阻止特定事件的默认行为
例如:点击a标签后会打开另一个链接,通过perventDefault()可以阻止打开新链接。var link=document.getElementById("aid"); link.onclick=function(event){ event.preventDefault(); }
注意:只有cancelable属性设置为true的事件才可以使用。
④stopPropagation()立即停止时间在DOM层次的传播
stopPropagation()立即停止时间在DOM层次的传播,即取消进一步的事件捕获或冒泡。//stopPropagation阻止事件捕获或冒泡 var btn=document.getElementById("mybtn"); btn.onclick=function(event){ alert("clicked"); alert(event.target.value)//获取发生事件元素的value //event.preventDefault(); //不行! event.stopPropagation(); } */
如果不调用stopPropagation(),事件冒泡向上寻找到div,触发绑定在div上的事件。调用后会停止冒泡,结果不会弹出 “div上的事件触发了”。
**
2.IE中的事件对象
****
3.跨浏览器的事件对象
**相关文章推荐
- js-事件1_事件对象event/ev 兼容性及其简易写法
- 获取js事件对象
- js向body创建对象、对象属性、对象事件,js获取元素坐标、元素边框大小、真实大小
- JS—事件对象
- js 实现图片预加载 (js操作 Image对象属性complete ,事件onload 异步加载图片)
- 【JS难题】循环内绑定对象事件
- js中获取事件对象的方法小结
- 通过JavaScript/JS事件及时捕获对象的改变
- 【JS】【jQuery】【操作对象:属性,节点,事件】
- JavaWeb - js函数,js事件,js的dom对象,document对象,innerHTML,表单提交/校验,json,js解析json
- js事件对象--DOM中的事件对象/IE中的事件对象/跨浏览器的事件对象
- javascript学习(十二):js 中为某个对象(控件)绑定事件通常可以采取两种手段
- js事件详解——事件流,事件处理,事件对象
- js事件对象兼容处理及传播机制
- js玩具——UI组件:ChildChangeEvent 子元素增删事件对象
- js 实现图片预加载 (js操作 Image对象属性complete ,事件onload 异步加载图片)
- JS 事件对象
- js中事件的处理与浏览器对象示例介绍
- 常用JS事件对象
- js--5.事件-3.事件对象event