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 iframe内的函数调用实现方法
Jul 19 Javascript
Javascript下判断是否为闰年的Datetime包
Oct 26 Javascript
Jquery截取中文字符串的实现代码
Dec 22 Javascript
让angularjs支持浏览器自动填表
Nov 10 Javascript
jquery trigger函数执行两次的解决方法
Feb 29 Javascript
利用css+原生js制作简单的钟表
Apr 07 Javascript
jQuery过滤选择器用法示例
Sep 12 Javascript
axios基本入门用法教程
Mar 25 Javascript
JavaScript模板引擎原理与用法详解
Dec 24 Javascript
vue项目打包后怎样优雅的解决跨域
May 26 Javascript
Websocket 向指定用户发消息的方法
Jan 09 Javascript
Vue中用JSON实现刷新界面不影响倒计时
Oct 26 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
PHP 中文处理技巧
2010/04/25 PHP
50个PHP程序性能优化的方法
2014/06/02 PHP
PHP读取mssql json数据中文乱码的解决办法
2016/04/11 PHP
基于ThinkPHP实现的日历功能实例详解
2017/04/15 PHP
十分钟打造AutoComplete自动完成效果代码
2009/12/26 Javascript
jQuery html() in Firefox (uses .innerHTML) ignores DOM changes
2010/03/05 Javascript
图片动画横条广告带上下滚动可自定义图片、链接等等
2013/10/20 Javascript
js图片处理示例代码
2014/05/12 Javascript
js获取日期:昨天今天和明天、后天
2014/06/11 Javascript
js变量、作用域及内存详解
2014/09/23 Javascript
jquery中show()、hide()和toggle()用法实例
2015/01/15 Javascript
js实现简单随机抽奖的方法
2015/01/27 Javascript
Javascript获取统一管理的提示语(message)
2016/02/03 Javascript
JavaScript通过使用onerror设置默认图像显示代替alt
2016/03/01 Javascript
实例讲解Jquery中隐藏hide、显示show、切换toggle的用法
2016/05/13 Javascript
jQuery提示插件qTip2用法分析(支持ajax及多种样式)
2016/06/08 Javascript
第八篇Bootstrap下拉菜单实例代码
2016/06/21 Javascript
jquery PrintArea 实现票据的套打功能(代码)
2017/03/17 Javascript
easyui-edatagrid.js实现回车键结束编辑功能的实例
2017/04/12 Javascript
JS基于递归实现网页版计算器的方法分析
2017/12/20 Javascript
脚手架vue-cli工程webpack的基本用法详解
2018/09/29 Javascript
详解React 条件渲染
2020/07/08 Javascript
Vue切换组件实现返回后不重置数据,保留历史设置操作
2020/07/21 Javascript
Python利用pyHook实现监听用户鼠标与键盘事件
2014/08/21 Python
Python抓取百度查询结果的方法
2015/07/08 Python
Python实现邮件的批量发送的示例代码
2018/01/23 Python
Python生成六万个随机,唯一的8位数字和数字组成的随机字符串实例
2020/03/03 Python
Django ORM判断查询结果是否为空,判断django中的orm为空实例
2020/07/09 Python
详解pandas映射与数据转换
2021/01/22 Python
HTML5自定义data-* data(obj)属性和jquery的data()方法的使用
2012/12/13 HTML / CSS
AURALog面试题软件测试方面
2013/10/22 面试题
中学生演讲稿
2014/04/26 职场文书
反腐倡廉标语
2014/06/24 职场文书
学校综治宣传月活动总结
2014/07/02 职场文书
2015年社区文体活动总结
2015/03/25 职场文书
六一晚会主持词开场白
2015/05/28 职场文书