首先是一个小例子:

<input type="text" onclick="a(event)"/>

function a(event){
   console.log(event)
}

event对象代表事件的状态,包括事件在其中发生的元素,键盘按键的状态、鼠标的位置、鼠标按键的状态

有MouseEvent(click,mouseover...),FocusEvent(focus)等

这里输出MouseEvent{}, 包含以下属性:

  1. altKey: false
  2. bubbles: true
  3. button: 0
  4. buttons: 0
  5. cancelBubble: false
  6. cancelable: true
  7. charCode: 0
  8. clientX: 79
  9. clientY: 24
  10. ctrlKey: false
  11. currentTarget: null
  12. dataTransfer: null
  13. defaultPrevented: false
  14. detail: 0
  15. eventPhase: 0
  16. fromElement: null
  17. keyCode: 0
  18. layerX: 79
  19. layerY: 24
  20. metaKey: false
  21. movementX: 0
  22. movementY: 0
  23. offsetX: 71
  24. offsetY: 13
  25. pageX: 79
  26. pageY: 24
  27. path: Array[5]
  28. relatedTarget: null
  29. returnValue: true
  30. screenX: 105
  31. screenY: 179
  32. shiftKey: false
  33. srcElement: input
  34. target: input
  35. timeStamp: 1477020320584
  36. toElement: input
  37. type: "mouseover"
  38. view: Window
  39. webkitMovementX: 0
  40. webkitMovementY: 0
  41. which: 0
  42. x: 79
  43. y: 24

详情: http://zccst.iteye.com/blog/1806261

详解:

鼠标/键盘属性:

altKey   事件发生时,alt键有没有被按下(布尔)

ctrlKey 事件发生时,ctrl键有没有被按下(布尔)

shiftKey 事件发生时,shift键有没有被按下(布尔)

metaKey 事件发生时,meta键有没有被按下(布尔)在windows下meta是那个飘小旗的键 在苹果系统中就是Cmd键

button  事件发生时,鼠标哪一个按键被点击(左键0/右键1)

relatedTarget 与事件发生的目标节点相关的节点(没有为null)

-----------------------------------------------------------------------------------------------------------------------------

各种定位:

clientX 事件发生时,鼠标水平坐标(数字)

clientY 事件发生时,鼠标垂直坐标(数字)

兼容性 全部

参照点为当前浏览器内容区域的左上角,随着滚动条的移动,参照点会改变

screenX screenY 与clientX类似,返回数字

参照点为电脑屏幕而非浏览器

兼容性 全部

pageX pageY

参照点为浏览器内容区域的左上角,不随滚动条的移动而改变

兼容性 chrome firefox opera IE9+

offsetX offsetY

参照点为该元素内容的的左上角,如果有border,可能出现负值

兼容性 chrome opera safari IE6+(原IE独有)

layoutX layoutY

参照点为1.若触发元素为绝对定位或相对定位,则以触发元素的border为参照物(类似offsetX,不过以border为参照物,不会有负值!)

    2.若不是,以页面为参照物

    3.IE为相对当前坐标系的border左上角开始的坐标 + 滚动条滚过的距离

兼容性 chrome firefox safari IE9+(原firefox独有)

x y

原IE独有,部分浏览器支持,不过能不用就不用!

具体可参考:

http://blog.sina.com.cn/s/blog_780a94270101kdgo.html

http://shanmao.me/web/js/pagex-clientx-offsetx-layerx-de-qu-bie

这些属性只有chrome和safari全部支持,但只有screenX和clientX符合w3c标准!

------------------------------------------------------------------------------------------------------------标准event属性:

bubbles 时间是否为起泡事件(布尔)

cancelable 事件是否有可取消的默认动作

currentTarget 触发该事件的元素(该元素或其子元素)

target 目标节点

timeStamp 事件生成的时间(毫秒数)

type 事件名称(比如 "click", "mouseover")

eventPhase 事件传播的当前阶段(捕获阶段1 正常事件派发2 起泡阶段3)

--------------------------------------------------------------------------------------------------------------------------------

标准event方法:

initEvent() 初始化新创建的Event对象的属性

preventDefault 阻止默认动作

stopPropagation 不再派发事件

---------------------------------------------------------------------------------------------------------------------------------

IE属性:

cancelBubble 阻止事件传播到包容对象(布尔值) 类似于stopPropagation ()

returnValue 取消默认动作 类似于preventDefault()

srcElement 生成事件的window对象,document对象或element对象 类似于target()

余下IE属性局限性大,不再解释,详情请看链接页面

--------------------------------------------------------------------------------------------------------

兼容性写法:

1.event

event || (event= window.event)

eg: function a(event){

  event || (event= window.event);

}

2.target

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

3.preventDefault()

event.preventDefault? event.preventDefault(): (event.returnValue= false);

4.stopPropagation()

event.stopPropagation? event.stopPropagation(): (event.cancelBubble= true);

event小解的更多相关文章

  1. 如何利用ETW(Event Tracing for Windows)记录日志

    ETW是Event Tracing for Windows的简称,它是Windows提供的原生的事件跟踪日志系统.由于采用内核(Kernel)层面的缓冲和日志记录机制,所以ETW提供了一种非常高效的事 ...

  2. [.NET] C# 知识回顾 - Event 事件

    C# 知识回顾 - Event 事件 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6060297.html 序 昨天,通过<C# 知识回顾 - ...

  3. Atitit 解决Unhandled event loop exception错误的办法

    Atitit 解决Unhandled event loop exception错误的办法 查看workspace/.metadata/.log org.eclipse.swt.SWTError: No ...

  4. Java模拟Windows的Event

    场景 开发中遇到一个场景,业务操作会不定时的产生工作任务,这些工作任务需要放入到一个队列中,而另外会有一个线程一直检测这个队列,队列中有任务就从队列中取出并进行运算. 问题 业务场景倒是简单,只不过这 ...

  5. 事件EVENT与waitforsingleobject的使用

    事件event与waitforsingleobject的配合使用,能够解决很多同步问题,也可以在数据达到某个状态时启动另一个线程的执行,如报警. event的几个函数: 1.CreateEvent和O ...

  6. 火狐浏览器中event不起作用解决办法--记录(一)

    今天遇到了这个问题.IE,谷歌下都没问题,但在FF下却不起作用,很郁闷查了半天,看别人博文写了老长,结果试了要么起作用,但太麻烦,要么不起作用,说了那么多跟没说一样. 其实只要这一句代码就行:e=ar ...

  7. Event事件

    妙味课堂-Event事件 1.焦点:当一个元素有焦点的时候,那么他就可以接受用户的输入(不是所有元素都能接受焦点) 给元素设置焦点的方式: 1.点击 2.tab 3.js 2.(例子:输入框提示文字) ...

  8. Event Sourcing Pattern 事件源模式

    Use an append-only store to record the full series of events that describe actions taken on data in ...

  9. 严重: Exception sending context initialized event to listener instance of class

    问题描述:Exception sending context initialized event to listener instance of class org.springframework.w ...

随机推荐

  1. php 原生能力进阶

    <?php header("Content-type:text/html;charset=utf-8"); $arr=200; $result =($arr%2==0||$a ...

  2. hdu_5858_Hard problem(数学题)

    题目链接:hdu_5858_Hard problem 题意: 让你求阴影部分面积 题解: 推推公式就行 #include<stdio.h> #include<math.h> # ...

  3. Mysql字符集修改为UTF8

    修改/etc/my.cnf,这个文件是安装的时候拷贝过去的 修改方法: [client]下添加 default-character-set=utf8 [mysqld]下添加 character-set ...

  4. 一步一步学EF系列 【7、结合IOC ,Repository,UnitOfWork来完成框架的搭建】

    前言 距离上一篇已经有段时间了,最近这段时间赶上新项目开发,一直没有时间来写.之前的几篇文章,主要把EF的基础都讲了一遍,这批文章就来个实战篇. 个人在学习过程中参考博客: Entity Framew ...

  5. 丢掉鼠标-Mac神软Alfred使用手册

    上篇: http://wellsnake.com/jekyll/update/2014/06/15/001/?utm_source=tuicool 下篇: http://wellsnake.com/j ...

  6. 大数据加减(Big data addition and subtraction)

    题目描述 Description 加减法是计算中的基础运算,虽然规则简单,但是位数太多了,也难免会出错.现在的问题是:给定任意位数(不超过1000位)的加减法算式,请给出正确结果.为提高速度,保证给定 ...

  7. jquery-ui-multiselect 的使用

    @model Gd.NetSign.Controllers.DTO.WsaleFundManageDTO @{ ViewBag.Title = "ShowDUYUN"; //Lay ...

  8. protected-broadcast的作用

    protected-broadcast(暂时从网上搜到这么多,也不知对错,先留着) “保护性广播”,在一些AndroidManifest.xml中的一级标记<protected-broadcas ...

  9. linux双线ip设置(不需额外增加路由表)

    linux 双线ip设置(不需额外增加路由表,只需修改下面就ok了)修改   vi /etc/iproute2/rt_tables              (增加电信和网通两个路由表) 增加252  ...

  10. HyperSnap(屏幕抓图工具) 8.11.03 官方简体中文特别版

    软件名称:屏幕抓图工具HyperSnap 软件分类:图像捕捉运行环境:WinXP/Win2003/Vista/Win7/Win8/WinALL软件语言:简体中文授权方式:免费软件软件大小:12462K ...