jquery 事件执行检测代码


Posted in Javascript onDecember 09, 2009

前两天做城市搜索的时候,我对搜索按钮绑定了事件,如果输入栏内的文字不符合要求就用标签提示(标签展示出来后对document绑定click,点击后隐藏标签)并使输入栏获得焦点。就这样一个小功能我调试了、3个多小时,IE 里表现的是标签一闪而过,后来发现是按钮的点击事件和input的交替出发了多次,估计是事件回退发生的,用了preventDefault() 和 stopPropagation()两个函数后修正了问题。虽然问题解决了,但是事件的执行顺序真是很难掌握呀,于是我做了个简单的事件监测函数,可以自动记录页面事件触发,见如下代码(首先肯定要引入jquery!...)

//事件执行监测 
function eventsMonitor(op){ 
var defaultSetting = { 
eventsStr: "click focus blur", 
splitStr: " ", 
css:{ 
"border":"1px red solid", 
"z-index":9000000, 
"background":"white", 
"position":"absolute", 
width:400, 
height:200, 
"overflow-x":"hidden", 
"overflow-y":"auto" 
} 
}; 
var ops = $.extend(true,defaultSetting,op); 
$('<div id="DivForLogEvents"><div></div><div>').appendTo("body").css(ops.css); 
var $infolog = $("#DivForLogEvents div:eq(0)"); 
$.each(ops.eventsStr.split(ops.splitStr),function(i,v){ 
if(v != 'resize') 
$("*:not('#DivForLogEvents')").bind(v, function(e){ 
if(!$(e.target).is("#DivForLogEvents") && !$(e.target).is($infolog)){ 
$infolog.append((e.target.nodeName||" ") + "->" + (e.target.id||e.target.Name||" ") + " "+v+" event!<br>"); 
$("#DivForLogEvents:not(:animated)").animate({scrollTop:$infolog.height()},300); 
} 
}); 
else 
$(window).bind('resize', function(e){ 
if(!$(e.target).is("#DivForLogEvents") && !$(e.target).is($infolog)){ 
$infolog.append((e.target.nodeName||" ") + "->" + (e.target.id||e.target.Name||" ") + " "+v+" event!<br>"); 
$("#DivForLogEvents:not(:animated)").animate({scrollTop:$infolog.height()},300); 
} 
}); 
}); 
}

调用方法示例
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<title>Untitled Document</title> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script><!--Google CDN--> 
<script type="text/javascript" src="eventsMonitor.js"></script><!--Google CDN--> 
<script type="text/javascript"> $(document).ready(function(){ 
eventsMonitor({ 
css:{top:0,right:20}, 
eventsStr:"click blur focus select scroll mousewheel resize" 
}); 
$("#info").click(function(){$(this).text($("#DivForLogEvents").outerHeight());}); 
}); 
</script> 
</head> 
<body> 
Hello world 
<img src="/upload/2009-12/20091209042029557.gif" /> 
<input type="text" id="name" value="测试" /> 
<span id="info">ffffffff</span> 
</body> 
</html>

效果截图

jquery 事件执行检测代码

Javascript 相关文章推荐
Javascript下判断是否为闰年的Datetime包
Oct 26 Javascript
js 操作select和option常用代码整理
Dec 13 Javascript
JS去掉第一个字符和最后一个字符的实现代码
Feb 20 Javascript
以Python代码实例展示kNN算法的实际运用
Oct 26 Javascript
Bootstrap每天必学之导航条(二)
Mar 01 Javascript
JS中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf()
Aug 11 Javascript
Angularjs中ng-repeat-start与ng-repeat-end的用法实例介绍
Dec 31 Javascript
微信小程序js文件改变参数并在视图上及时更新【推荐】
Jun 11 Javascript
JavaScript实现的3D旋转魔方动画效果实例代码
Jul 31 Javascript
jquery实现点击弹出对话框
Feb 08 jQuery
Vue组件通信$attrs、$listeners实现原理解析
Sep 03 Javascript
javascript canvas实现简易时钟例子
Sep 05 Javascript
为指定元素增加样式的js代码
Dec 09 #Javascript
javascript setTimeout和setInterval 的区别
Dec 08 #Javascript
javascript OFFICE控件测试代码
Dec 08 #Javascript
JavaScript Cookie 直接浏览网站分网址
Dec 08 #Javascript
JavaScript Cookie显示用户上次访问的时间和次数
Dec 08 #Javascript
JavaScript 利用Cookie记录用户登录信息
Dec 08 #Javascript
JavaScript Cookie的读取和写入函数
Dec 08 #Javascript
You might like
re0第二季蕾姆被制作组打入冷宫!艾米莉亚女主扶正,原因唏嘘
2020/04/02 日漫
php设计模式  Command(命令模式)
2011/06/17 PHP
PHP简单数据库操作类实例【支持增删改查及链式操作】
2016/10/10 PHP
PHP中的多种加密技术及代码示例解析
2016/10/20 PHP
免费空间广告万能消除代码
2006/09/04 Javascript
js利用div背景,做一个竖线的效果。
2008/11/22 Javascript
JS在IE和FireFox之间常用函数的区别小结
2010/03/12 Javascript
Extjs 继承Ext.data.Store不起作用原因分析及解决
2013/04/15 Javascript
jquery代码实现多选、不同分享功能
2015/07/31 Javascript
JS实现选项卡实例详解
2015/11/17 Javascript
jQuery中事件与动画的总结分享
2016/05/24 Javascript
JS从数组中随机取出几个数组元素的方法
2016/08/02 Javascript
Javascript生成带参数的二维码示例
2016/10/10 Javascript
CSS+jQuery实现简单的折叠菜单
2016/12/20 Javascript
JS组件系列之MVVM组件构建自己的Vue组件
2017/04/28 Javascript
vue实现留言板todolist功能
2017/08/16 Javascript
深入理解Vue2.x的虚拟DOM diff原理
2017/09/27 Javascript
vue检测对象和数组的变化分析
2018/06/30 Javascript
详解小程序之简单登录注册表单验证
2019/05/13 Javascript
vue-cli 项目打包完成后运行文件路径报错问题
2019/07/19 Javascript
浅谈python内置变量-reversed(seq)
2017/06/21 Python
对python借助百度云API对评论进行观点抽取的方法详解
2019/02/21 Python
网易有道2017内推编程题 洗牌(python)
2019/06/19 Python
python实现二分查找算法
2020/09/18 Python
详解HTML5 Canvas标签及基本使用
2020/01/10 HTML / CSS
Cinque网上商店:德国服装品牌
2019/03/17 全球购物
为什么会有内存对齐
2016/10/10 面试题
杭州-飞时达软件有限公司.net笔面试
2012/04/28 面试题
事业单位个人应聘自荐信
2013/09/21 职场文书
护士实习求职信
2014/06/22 职场文书
面试感谢信范文
2015/01/22 职场文书
换届选举主持词
2015/07/03 职场文书
2016优秀班主任个人先进事迹材料
2016/02/26 职场文书
Python词云的正确实现方法实例
2021/05/08 Python
virtualenv隔离Python环境的问题解析
2022/06/21 Python
解决ubuntu安装软件时,status-code=409报错的问题
2022/12/24 Servers