event小解
首先是一个小例子:
<input type="text" onclick="a(event)"/>
function a(event){
console.log(event)
}
event对象代表事件的状态,包括事件在其中发生的元素,键盘按键的状态、鼠标的位置、鼠标按键的状态
有MouseEvent(click,mouseover...),FocusEvent(focus)等
这里输出MouseEvent{}, 包含以下属性:
- altKey: false
- bubbles: true
- button: 0
- buttons: 0
- cancelBubble: false
- cancelable: true
- charCode: 0
- clientX: 79
- clientY: 24
- ctrlKey: false
- currentTarget: null
- dataTransfer: null
- defaultPrevented: false
- detail: 0
- eventPhase: 0
- fromElement: null
- keyCode: 0
- layerX: 79
- layerY: 24
- metaKey: false
- movementX: 0
- movementY: 0
- offsetX: 71
- offsetY: 13
- pageX: 79
- pageY: 24
- path: Array[5]
- relatedTarget: null
- returnValue: true
- screenX: 105
- screenY: 179
- shiftKey: false
- srcElement: input
- target: input
- timeStamp: 1477020320584
- toElement: input
- type: "mouseover"
- view: Window
- webkitMovementX: 0
- webkitMovementY: 0
- which: 0
- x: 79
- 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小解的更多相关文章
- 如何利用ETW(Event Tracing for Windows)记录日志
ETW是Event Tracing for Windows的简称,它是Windows提供的原生的事件跟踪日志系统.由于采用内核(Kernel)层面的缓冲和日志记录机制,所以ETW提供了一种非常高效的事 ...
- [.NET] C# 知识回顾 - Event 事件
C# 知识回顾 - Event 事件 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6060297.html 序 昨天,通过<C# 知识回顾 - ...
- Atitit 解决Unhandled event loop exception错误的办法
Atitit 解决Unhandled event loop exception错误的办法 查看workspace/.metadata/.log org.eclipse.swt.SWTError: No ...
- Java模拟Windows的Event
场景 开发中遇到一个场景,业务操作会不定时的产生工作任务,这些工作任务需要放入到一个队列中,而另外会有一个线程一直检测这个队列,队列中有任务就从队列中取出并进行运算. 问题 业务场景倒是简单,只不过这 ...
- 事件EVENT与waitforsingleobject的使用
事件event与waitforsingleobject的配合使用,能够解决很多同步问题,也可以在数据达到某个状态时启动另一个线程的执行,如报警. event的几个函数: 1.CreateEvent和O ...
- 火狐浏览器中event不起作用解决办法--记录(一)
今天遇到了这个问题.IE,谷歌下都没问题,但在FF下却不起作用,很郁闷查了半天,看别人博文写了老长,结果试了要么起作用,但太麻烦,要么不起作用,说了那么多跟没说一样. 其实只要这一句代码就行:e=ar ...
- Event事件
妙味课堂-Event事件 1.焦点:当一个元素有焦点的时候,那么他就可以接受用户的输入(不是所有元素都能接受焦点) 给元素设置焦点的方式: 1.点击 2.tab 3.js 2.(例子:输入框提示文字) ...
- Event Sourcing Pattern 事件源模式
Use an append-only store to record the full series of events that describe actions taken on data in ...
- 严重: Exception sending context initialized event to listener instance of class
问题描述:Exception sending context initialized event to listener instance of class org.springframework.w ...
随机推荐
- 【LeetCode】456. 132 Pattern
Given a sequence of n integers a1, a2, ..., an, a 132 pattern is a subsequence ai, aj, ak such that ...
- visual studio2013 apache cordova基于web的跨平台应用
目前在研究微软的visual studio 2013开发跨平台的android.ios.windows phone.当然是基于html javascript css的web跨平台app. 在visua ...
- 【🉐】 彻底理解webservice SOAP WSDL
原文: http://wenku.baidu.com/view/f87b55f19e31433239689314.html WebServices简介 先给出一个概念 SOA ,即Service Or ...
- C语言中字符串
#include <stdio.h> int main(){ char s[] = "ABCD"; char *p; for(p=s; p<s+4; p++) { ...
- 对一个表中所有列数据模糊查询adoquery
如何用adoquery对一个表中所有列进行模糊查询: procedure TForm3.Button4Click(Sender: TObject); var ASql,AKey: string; I: ...
- TortoiseGit - Win7使用Gitblit搭建Git服务器教程
第一步:下载Java并且安装 第二步:配置Java环境变量环境变量 --> 系统变量1新建:变量名:JAVA_HOME变量值:D:\Program Files (x86)\Java\jdk1.6 ...
- [ An Ac a Day ^_^ ] hdu 4565 数学推导+矩阵快速幂
从今天开始就有各站网络赛了 今天是ccpc全国赛的网络赛 希望一切顺利 可以去一次吉大 希望还能去一次大连 题意: 很明确是让你求Sn=[a+sqrt(b)^n]%m 思路: 一开始以为是水题 暴力了 ...
- FZU 1920 Left Mouse Button 简单搜索
题意就是扫雷 问最少多少次可以把图点开…… 思路也很明显 就是先把所有的标记一遍 就当所有的都要点…… 录入图…… 所有雷都不标记…… 之后呢 遍历图…… 然后碰到0就搜索一圈 碰到数字就标记…… 不 ...
- sql分页比较简单快捷的方法
SELECT TOP 显示数量* FROM 表 WHERE (主键id>(SELECT MAX(主键id) FROM(SELECT TOP 页码数*显示数量 主键id FROM 表 ORDER ...
- 在 iOS 应用中直接跳转到 AppStore 的方法
找到应用程序的描述链接,在itunes中找到相应的应用,(如下图),点击免费右边的下方向键,选择复制链接,就拿到了对应的app的描述链接 比如:https://itunes.apple.com/c ...