事件的一些简单了解

事件深入了解

1):当点击在一个元素时,单击事件不仅仅发生在这个元素上,同时也点击了他的父元素以及祖先元素,甚至是整个页面。

2):DOM分三级事件绑定

1:dom0级事件绑定

dom.onclick = fun( )只能监听冒泡,不能监听捕获。注意ie9,chrome里面的冒泡,一直到window对象,

但是ie678只到document对象。且没有window对象。

这种事件处理程序里面的this指的是时间源,没有兼容性问题,DOM0级可以将事件监听直接写在标签中,但工作中不允许这样用。

DOM0级相同元素不能同时添加多个相同事件,会被覆盖。

2:DOM1级,与0级没有区别

3:DOM2级事件绑定

addEventListener()

参数1:事件 click mouseover 不加on

参数2:事件处理程序。

参数3:冒泡 false  捕获 true。DOM2级可以同一个元素添加多个事件,不会冲突。事件处理程序里面的this指的是事件源本身。

ie678浏览器绑定事件,

attachEvent(),只有两个参数。

参数一:onclick onmouseover  必须加on

参数2:事件处理程序,function。不能监听冒泡或者捕获。这个事件处理程序中的this值得不是事件源,而是window。

同一个元素添加多个事件,执行的顺序是从后到前面。

4:经典轮子(兼容性能力检测:计算后样式,运动框架,className,addEvent)

兼容性处理。jquery中用的都是dom2级,自带轮子(兼容性),jquery事件同名不会被覆盖。

三:事件对象

event

任何事件处理函数中,浏览器js引擎都会默认往里面传递一个实参,就是事件对象

box.onclick = function(event){console.dir(event);}

console.log(event);

//返回true代表这个事件是否冒泡

console.log(event.bubbles);

//返回被点击的事件

console.log(event.target);

//事件源的id

console.log(event.currentTarget.id);

//被点击事件的id

console.log(event.target.id);

//事件类型

console.log(event.type);

//被点击事件的id

console.log(event.srcElement.id);

//this指代真正的事件源

console.log(this);

event.stoppropagation();阻止冒泡,只执行到当前

event.preventDefault();阻止默认事件

event中常用的几个位置属性

属性                                                 参照

clientX clientY                            浏览器左上角

x                                                左上角

layerX layerY                              当前事件源左上角

pageX pageY                             当前文档左上角

offsetX offsetY                          当前事件源左上角

screenX screeY                          屏幕左上角

event判断敲击的是那个键盘。

event.keyCode. event.which //onkeydown,:键盘按下   onkeyup.键盘抬起  onkeypress键盘按下抬起

var ev = e||window.event;//为了兼容ie678;

event在ie678里面存在问题,这里不是实参,是window的一个属性,直接使用实参形式不可用window.event

event在ie678里面没有preventDefault( )方法,使用event.returnValue = false;来阻止默认事件。

if (event.preventDefault) {

event.preventDefault();

}else{

event.returnValue = false;

}

event属性target

获取当前点击的元素,但是在ie678里面不兼容,所以在ie678里面使用srcElement

var target = event.target ||event.srcElement;

时间: 2024-10-10 13:54:30

事件的一些简单了解的相关文章

Android的Touch事件分发机制简单探析

前言 Android中关于触摸事件的分发传递是一个很值得研究的东西.曾不见你引入了一个ListView的滑动功能,ListView就不听你手指的指唤来滚动了:也不知道为啥Button设置了onClick和onTouch,其中谁会先响应:或许你会问onTouch和onTouchEvent有什么区别,又该如何使用?这里一切的一切,只要你了解了事件分发机制,你会发现,解释这都不是事儿! 相关Touch事件的方法 1.public boolean dispatchTouchEvent(MotionEve

对touch事件传递的简单理解

对View事件传递的理解,看的这篇. 对事件传递有了大致的了解.onInterceptTouchEvent 函数决定是否将事件拦截,拦截之后,该控件的所有子控件接收不到这个事件.onTouchEvent 函数判断是否消费此事件,在父控件把事件传递到子控件的过程中,假设都没有拦截,那么消息会传递到底层控件,底层控件可以选择消费或者不消费,如果消费,那么事件到此终止,如果没有消费,则一层一层传递给父类.如果中途被拦截了,那么拦截的那个控件充当上述过程的底层控件.最重要的,在这个过程中,事件所经过的控

【热门技术】EventBus 3.0,让事件订阅更简单,从此告别组件消息传递烦恼~

一.写在前面 还在为时间接收而烦恼吗?还在为各种组件间的消息传递烦恼吗?EventBus 3.0,专注于android的发布.订阅事件总线,让各组件间的消息传递更简单!完美替代Intent,Handler,BroadCast,接口等传统方案.这么优雅的功能实现,却只有50k左右的jar包,无疑集快.小.优雅解耦于一身,目前最新版本为3.0,与之前版本有所冲突,官方网址:https://github.com/greenrobot/EventBus 二.使用简介 总的流程只需要4步:添加依赖=>编写

Android IOC 之 注解绑定控件 以及事件 事例 代码简单注释讲解

想必开发过android的都使用过一些 框架,然而框架里都会使用一些,注解来帮助我们,节省大量的代码开发量.同时也使代码更加的简洁. 但是注解是通过java反射来实现的当然可能会牺牲掉一些性能. 以下是本人写的一个较为简单的绑定控件,并且触发其OnclickListem 事件. //直接先看下注解方法.比较简单,清晰 public class MainActivity extends FragmentActivity { <span style="white-space:pre"

JS阻止冒泡事件以及默认事件发生的简单方法

如果<p>是在<div>里面,那么呢,<P>有一个onclick事件,<div>也有onclick事件,为了触发<P>的点击事件时,不触发父元素的点击事件,那么就需要调用如下函数: 代码如下: function stopBubble(e){ if(e&&e.stopPropagation){//非IE e.stopPropagation(); } else{//IE window.event.cancelBubble=true;

利用事件冒泡实现简单的网页计算器

效果: 代码: <!DOCTYPE HTML> <html> <head> <title>取消与利用冒泡</title> <meta charset="utf-8"/> </head> <body> <div id="keys"> <button>1</button> <button>2</button> <

关于JS绑定事件,基础

两种绑定方式 第一种为(DOM0):obj.onclick = fn; 第二种为(DOM2): ie:obj.attachEvent(事件名称,事件函数); 1.没有捕获(非标准的ie 标准的ie底下有 ie6到10) 2.事件名称有on 3.事件函数执行的顺序:标准ie->正序 非标准ie->倒序 4.this指向window 标准:obj.addEventListener(事件名称,事件函数,是否捕获); 1.有捕获 2.事件名称没有on 3.事件执行的顺序是正序 4.this触发该事件的

从事件来看委托

事件是基于委托,为委托提供了一种发布/订阅机制,在dotNet到处都能看到事件,一个简单的例子就是在windows应用程序中,Button类提供了Click事件,这类事件就是委托,触发Click事件时调用的处理程序方法需要定义,其参数也是由委托类型定义的,事件模型可以用下图简要说明. 在这个模型中,事件的响应者通过订阅关系直接关联在事件拥有者的事件上,我们把这种事件模型或者CLR事件模型.因为CLR事件本质上是一个委托实例,我们暂且模仿CLR属性的说法,把CLR事件定义为一个委托类型实例的包装器

粗浅的总结下事件流

什么是事件流?以及为什么要有事件流? 简单的说,事件流就是,确认触发条件满足时,事件对应函数的调用顺序.举个例子,鼠标光标在某个按钮上点击了,按钮又绑定了mousedown事件,那么其对应的函数就会调用.而其实,光标落下的位置也在document.window的范围内,或许还可能在其他元素的和模型内.如果这些元素也都绑定了mousedown事件,那么哪个元素的mousedown事件对应的函数先调用呢?这就需要确认一个发生的顺序问题. 具体的说,事件流分为三个阶段,即捕获阶段.目标(处理)阶段.冒