鼠标点击 INPUT 元素后默认触发的事件执行顺序
来源:互联网 发布:网络作家笔名 编辑:程序博客网 时间:2024/05/23 01:18
所有浏览器中,当用户通过鼠标操作触发 click 事件时,事件触发顺序:
1、MouseDown 事件
2、Focus 事件
3、MouseUp 事件
4、Click 事件
可点击测试网页
测试代码如下:
<script> window.onload = function (){ function stopDefault(e){ e = e || window.event; (e.preventDefault) ?e.preventDefault() :e.returnValue = false; } function addEvent(el, type, fn){ (el.addEventListener) ? el.addEventListener(type, fn, false) :(function () { el.attachEvent("on" + type, function(e){ fn.call(el,e); }); })(); } function setEvents(elment){ addEvent(elment,"mousedown",function (e){ this.value+=' mousedown 事件被触发'; stopDefault(e); }); addEvent(elment,"focus",function (e){ this.value+=' focus 事件被触发'; }); addEvent(elment,"mouseup",function (e){ this.value+=' mouseup 事件被触发'; }); addEvent(elment,"click",function (e){ this.value+=' click 事件被触发'; }); } setEvents(document.getElementsByTagName("input")[2]); }</script><ol><li> <h2> 鼠标默认行为触发顺序 </h2> <input style="width:100%;" onmousedown="this.value+=' mousedown 事件被触发 ';" onfocus="this.value+=' focus 事件被触发 '" onclick="this.value+=' click 事件被触发 '" onmouseup="this.value+=' mouseUp 事件被触发 '"> <p>点击文本域后显示 click 事件相关联的各个事件触发顺序。</p></li><li> <h2> 使用 return false 语句阻止 MouseDown 后续默认行为触发 </h2> <input style="width:100%;" onmousedown="this.value+=' mousedown 事件被触发 ';return false;" onfocus="this.value+=' focus 事件被触发 '" onclick="this.value+=' click 事件被触发 '" onmouseup="this.value+=' mouseUp 事件被触发 '"> <p>点击文本域后没有继续执行 focuse 事件内程序,则说明成功阻止了默认行为。</p></li><li> <h2>使用 preventDefault 方法阻止 MouseDown 后续默认行为触发 </h2> <input style="width:100%;"> <p>点击文本域后没有继续执行 focuse 事件内程序,则说明成功阻止了默认行为。</p></li></ol>
注意:在 IE 浏览器中,在 MouseDown 事件的处理函数中,取消浏览器默认行为执行后,如果点击的是可获得焦点的元素 (如 INPUT) ,那么他依然会获得焦点并触发 Focus 事件。
而在非 IE 浏览器中,此情况下元素无法获得焦点,也不会触发 Focus 事件。
这篇文章分析的非常到位,IE 浏览器中 MouseDown 事件中取消浏览器默认行为后 Focus 事件依然被触发,值得参考。
阅读全文
1 0
- 鼠标点击 INPUT 元素后默认触发的事件执行顺序
- 让一个按钮自动触发,自动执行onclick鼠标单击事件. 默认已点击.
- 触发鼠标点击事件
- 鼠标点击不同位置触发的事件
- input圆形多选按钮状态改变(checked)与点击触发事件的优先顺序
- Jquery控制点击事件的触发顺序
- TreeView1鼠标点击节点触发的单击事件
- 鼠标触发的事件
- 鼠标的触发事件
- 解决鼠标经过内部元素触发onmouseout事件的问题
- javascript的奇怪的问题,鼠标点击偶数次触发事件,单数次不触发事件
- 有关input输入框内容改变后的触发事件
- html如何点击子元素事件而不触发父元素的点击事件
- Zepto 点击指定元素以外的地方触发事件
- GeckoFx (7)触发html元素的click点击事件
- JQuery实现点击div里面的元素能触发点击事件,但是不触发外面的div的点击事件
- unity3d 触发guitexture 鼠标点击事件
- 屏蔽右键,点击鼠标触发事件,置顶
- url encode
- mysql+keepalived双主高可用
- Java虚拟机(二)
- 恢复SAP IDES中SPFLI SFLIGHT SBOOK表数据
- 初试图像拼接
- 鼠标点击 INPUT 元素后默认触发的事件执行顺序
- Java并发同步
- hadoop常用的命令
- [Zabbix] Agent 安装
- stl list原理和用法
- 结构体初始化 initializer element is not constant
- UmBasketella(三分算法解决单峰问题)
- git/gerrit 常用命令记载
- 「とても」「あまり」「大変」的用法区别