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 相关文章推荐
小议Function.apply()之二------利用Apply的参数数组化来提高 JavaScript程序性能
Nov 30 Javascript
js中浮点型运算BUG的解决方法说明
Jan 06 Javascript
JS实现在线统计一个页面内鼠标点击次数的方法
Feb 28 Javascript
javascript实现查找数组中最大值方法汇总
Feb 13 Javascript
Vue.js学习笔记之 helloworld
Aug 14 Javascript
JS+html5 canvas实现的简单绘制折线图效果示例
Mar 13 Javascript
JavaScript实现旋转轮播图
Aug 18 Javascript
JS实现页面打印(整体、局部)
Aug 18 Javascript
浅谈vue方法内的方法使用this的问题
Sep 15 Javascript
JavaScript生成随机验证码代码实例
Sep 28 Javascript
VUE 解决mode为history页面为空白的问题
Nov 01 Javascript
vue 获取及修改store.js里的公共变量实例
Nov 06 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
php5.2.0内存管理改进
2007/01/22 PHP
CI框架中zip类应用示例
2014/06/17 PHP
PHP中对数组的一些常用的增、删、插操作函数总结
2015/11/27 PHP
Zend Framework教程之路由功能Zend_Controller_Router详解
2016/03/07 PHP
PHP页面输出搜索后跳转下一页的处理方法
2016/09/30 PHP
ThinkPHP中create()方法自动验证实例
2017/04/26 PHP
PHP时间处理类操作示例
2018/09/05 PHP
PHP获取当前时间不准确问题解决方案
2020/08/14 PHP
jquery checkbox,radio是否选中的判断代码
2010/03/20 Javascript
window.open的页面如何刷新(父页面)上层页面
2012/12/28 Javascript
js中单引号与双引号冲突问题解决方法
2013/10/04 Javascript
javascript客户端遍历控件与获取父容器对象示例代码
2014/01/06 Javascript
JavaScript利用正则表达式去除日期中的“-”
2014/07/01 Javascript
JavaScript获取页面上被选中文字的方法技巧
2015/03/13 Javascript
js实时获取并显示当前时间的方法
2015/07/31 Javascript
整理Javascript函数学习笔记
2015/12/01 Javascript
JavaScript 2048 游戏实例代码(简单易懂)
2016/03/25 Javascript
异步加载JS、CSS代码(推荐)
2016/06/15 Javascript
使用jsonp实现跨域获取数据实例讲解
2016/12/25 Javascript
如何制作幻灯片(代码分享)
2017/01/06 Javascript
Popup弹出框添加数据实现方法
2017/10/27 Javascript
过滤器vue.filters的使用方法实现
2019/09/18 Javascript
微信小程序动态设置图片大小的方法
2019/11/21 Javascript
python获取目录下所有文件的方法
2015/06/01 Python
Python编程中time模块的一些关键用法解析
2016/01/19 Python
Python在Matplotlib图中显示中文字体的操作方法
2019/07/29 Python
Python中调用其他程序的方式详解
2019/08/06 Python
10分钟教你用python动画演示深度优先算法搜寻逃出迷宫的路径
2019/08/12 Python
pytorch 数据处理:定义自己的数据集合实例
2019/12/31 Python
pytorch三层全连接层实现手写字母识别方式
2020/01/14 Python
CSS3提交意见输入框样式代码
2014/10/30 HTML / CSS
h5调用摄像头的实现方法
2016/06/01 HTML / CSS
世界上最好的野生海鲜和有机食品:Vital Choice
2020/01/16 全球购物
电子商务专业个人的自我评价分享
2013/10/29 职场文书
大学毕业感言100字
2014/02/03 职场文书
离婚协议书范本2014
2014/10/27 职场文书