美文网首页
js中event事件对象

js中event事件对象

作者: 松鼠症患者 | 来源:发表于2017-08-30 16:00 被阅读0次

在js中有一个专门的事件对象,来对事件进行操作:
event:当事件发生时,与事件有关的信息存储在一个临时的地方-event对象里面.供我们随时调用
event对象的方法:
clientX:鼠标距离页面可视区域左边的距离,相应的Y为上边的距离

事件流里的事件冒泡现象:
首先,试想冒泡是什么意思,在沸水里冒泡泡,物质从一个介质中提炼出来进入另一个介质,这就是冒泡现象
那么事件冒泡就是当一个元素接受到事件时,会把它接收的所有信息传给父级,一直到顶层window,这种现象为事件冒泡机制.

认识一下事件:事件的存在并不受事件函数的影响,比如无论div元素是否绑定了onclick事件,当你点击div时,点击这个事件已经存在了
,只是如果未绑定事件函数的话,什么也不会发生而已.

冒泡会解决很大一部分重复操作,但是有时候需要某个元素脱离事件流,不参与冒泡所以在要阻止的事件函数中添加event.cancelBubble=true;语句,cancelBubble意为取消冒泡.例:

oBtn.onclick=function(){
  var ev=ev||event; 这是为兼容性考虑
  ev.cancelBubble=true;  阻止oBtn点击事件的冒泡现象;
}

接下来学习另外一种绑定事件函数的方法:

首先我们掌握的绑定事件函数的方法为:
obj.onclick=function(){};
但当我们需要绑定多个函数为点击事件时就会出现问题

obj.onclick=function fn1(){};
obj.onclick=function fn2(){};

这样写,fn2会覆盖fn1,二者不能共存,所以出现第二种方法可以使多个函数共存,但是第二种绑定存在兼容性问题:

ie:obj.attachEvent("on"+事件名称,事件函数)

1.没有捕获
2.事件名称必须加"on"
3.事件函数的执行顺序:ie 678为倒序执行,即先执行写在下面的函数,ie9以后为正序.
4.this指向Window(即在使用this时,事件函数相当于绑定到了Window)

w3c:obj.addEventListenner(事件名称,事件函数,是否捕获);
1.有捕获 默认false为冒泡 true为捕获
2.事件名称没有"on"
3事件顺序只有正序
4.this指向当前对象(正常)

例子:

function ok(obj,evname,fn){                           定义三个参数,接下来的函数中要用

  绑定事件函数存在兼容性问题,所以用if:

  if(obj.addEventListenner){ 
    obj.addEventListenner(evname,fn1,false);         w3c浏览器
    obj.addEventListenner(evname,fn2,false);
  }else{
    obj.attachEvent(     "on"+evname , function(){fn1.call(obj);  在该事件函数中添加这句解决this问题}   ); 在ie,由于this指向有问题,所以用call修正为obj
    obj.attachEvent(     "on"+evname , function(){fn2.call(obj);}                                       );
    };

}

如上,第二种绑定事件函数的方法可以使fn1和fn2共存,但执行顺序ie和w3c有所不同.

call方法为function函数的一种原生方法,就像数组里的push一样.
call意为调用函数:fn()==fn.call() 这两个是完全一样的,但call更为强大,使用call调用函数时可直接传参,其中第一个参数可以改变函数内部this的指向,从第二个参数开始就是原来的函数参数列表.如果第一个参数为null即空,则不改变this指向.

相关文章

  • js中event事件对象

    在js中有一个专门的事件对象,来对事件进行操作:event:当事件发生时,与事件有关的信息存储在一个临时的地方-e...

  • Vue构造器里面的选项:methods

    绑定事件的时候,如何传递事件对象event我们在平时写js代码的时候的绑定事件: 在vue中传递事件对象呢?是通过...

  • js中event的target和currentTarget

    js中的event对象包含很多有用的信息 target:触发事件的元素。 currentTarget:事件绑定的元...

  • JS事件—Event 对象

    概述 事件发生以后,会产生一个事件对象,作为参数传给监听函数。浏览器原生提供一个Event对象,所有的事件都是这个...

  • event 事件对象

    event 对象及使用 event 对象是什么? event 对象表示事件的状态,当 dom 树中某个事件被触发时...

  • JS学习之事件对象

    JS学习之事件对象理解 在触发DOM上的某个事件时,会创建一个event对象,该对象中包含着与事件相关的信息,包括...

  • DOM事件(二)

    一、 事件对象 1.1 DOM中的事件对象 在触发DOM上的某个事件时,会产生一个事件对象event: event...

  • DOM事件对象与IE事件对象

    DOM 事件处理对象 IE事件对象 注意: DOM中事件处理对象中的 event.currentTarget 与 ...

  • 事件对象和事件委托

    事件对象事件发生的详细信息 在ie和chrome 事件详细信息保存到内置的 event对象中Event 对象代表事...

  • 事件

    js里有许多事件下面简单介绍一下 绑定事件 事件对象event 事件对象扩展 事件冒泡 监听器 事件冒泡的阻止 默...

网友评论

      本文标题:js中event事件对象

      本文链接:https://www.haomeiwen.com/subject/bpmtjxtx.html