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 相关文章推荐
Js之软键盘实现(js源码)
Jan 30 Javascript
JavaScript在IE和Firefox浏览器下的7个差异兼容写法小结
Jun 18 Javascript
js使用eval解析json实例与注意事项分享
Jan 18 Javascript
Bootstrap对话框使用实例讲解
Sep 24 Javascript
微信开发 消息推送实现代码
Oct 21 Javascript
JS实现的驼峰式和连字符式转换功能分析
Dec 21 Javascript
jQuery+Ajax实现用户名重名实时检测
Jun 01 jQuery
CheckBox多选取值及判断CheckBox选中是否为空的实例
Oct 31 Javascript
浅析Proxy可以优化vue的数据监听机制问题及实现思路
Nov 29 Javascript
layui 根据后台数据动态创建下拉框并同时默认选中的实例
Sep 02 Javascript
vue中nextTick用法实例
Sep 11 Javascript
为什么推荐使用JSX开发Vue3
Dec 28 Vue.js
为指定元素增加样式的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的面试题集
2006/11/19 PHP
解析dedeCMS验证码的实现代码
2013/06/07 PHP
使用Javascript和DOM Interfaces来处理HTML
2006/10/09 Javascript
jQuery+CSS 实现的超Sexy下拉菜单
2010/01/17 Javascript
Javascript实现仿WebQQ界面的“浮云”兼容 IE7以上版本及FF
2011/04/27 Javascript
网页中表单按回车就自动提交的问题的解决方案
2014/11/03 Javascript
JQuery使用index方法获取Jquery对象数组下标的方法
2015/05/18 Javascript
分享五个有用的jquery小技巧
2015/10/08 Javascript
AngularJS入门教程之静态模板详解
2016/08/18 Javascript
jQuery事件对象总结
2016/10/17 Javascript
jQuery实现字符串全部替换的方法【推荐】
2017/03/09 Javascript
Node.js Buffer用法解读
2018/05/18 Javascript
解决VUE中document.body.scrollTop为0的问题
2018/09/15 Javascript
利用JS动态生成隔行换色HTML表格的两种方法
2018/10/09 Javascript
vue2.0 如何在hash模式下实现微信分享
2019/01/22 Javascript
Angular CLI 使用教程指南参考小结
2019/04/10 Javascript
微信小程序拼接图片链接无底洞深入探究
2019/09/03 Javascript
vue 监听 Treeselect 选择项的改变操作
2020/08/31 Javascript
JavaScript canvas实现雨滴特效
2021/01/10 Javascript
python通过apply使用元祖和列表调用函数实例
2015/05/26 Python
python实现本地图片转存并重命名的示例代码
2018/10/27 Python
Python递归函数 二分查找算法实现解析
2019/08/12 Python
基于python cut和qcut的用法及区别详解
2019/11/22 Python
python之MSE、MAE、RMSE的使用
2020/02/24 Python
Numpy实现卷积神经网络(CNN)的示例
2020/10/09 Python
New Balance美国官网:运动鞋和健身服装
2017/04/11 全球购物
艺龙旅行网酒店预订:国内、港澳台酒店
2018/06/26 全球购物
Amcal中文官网:澳洲综合性连锁药房
2019/03/28 全球购物
意大利和国际最佳时尚品牌:Drestige
2019/12/28 全球购物
校园歌手大赛策划书
2014/01/17 职场文书
党支部四风整改方案
2014/10/25 职场文书
全陪导游词
2015/02/04 职场文书
学雷锋日活动总结
2015/02/06 职场文书
ORACLE数据库对long类型字段进行模糊匹配的解决思路
2021/04/07 Oracle
如何解决.cuda()加载用时很长的问题
2021/05/24 Python
MySQL一劳永逸永久支持输入中文的方法实例
2022/08/05 MySQL