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 相关文章推荐
制作高质量的JQuery Plugin 插件的方法
Apr 20 Javascript
JavaScript拆分字符串时产生空字符的解决方案
Sep 26 Javascript
jQuery右下角悬浮广告实例
Oct 17 Javascript
前端页面文件拖拽上传模块js代码示例
May 19 Javascript
Ionic3实现图片瀑布流布局
Aug 09 Javascript
Gulp实现静态网页模块化的方法详解
Jan 09 Javascript
基于IView中on-change属性的使用详解
Mar 15 Javascript
解析vue路由异步组件和懒加载案例
Jun 08 Javascript
小程序登录态管理的方法示例
Nov 13 Javascript
详解几十行代码实现一个vue的状态管理
Jan 28 Javascript
vue element-ui实现动态面包屑导航
Dec 23 Javascript
JavaScript实现无限轮播效果
Nov 19 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 来访国内外IP判断代码并实现页面跳转
2009/12/18 PHP
php实现在线生成条形码示例分享(条形码生成器)
2013/12/30 PHP
php实现以只读方式打开文件的方法
2015/03/16 PHP
PHP实现抓取迅雷VIP账号的方法
2015/07/30 PHP
ThinkPHP实现更新数据实例详解(demo)
2016/06/29 PHP
JS仿flash上传头像效果实现代码
2011/07/18 Javascript
Jquery动态更改一张位图的src与Attr的使用
2013/07/31 Javascript
js判断变量初始化的三种形式及推荐用的形式
2014/07/22 Javascript
jQuery实现定时读取分析xml文件的方法
2015/07/16 Javascript
jQuery Form 表单提交插件之formSerialize,fieldSerialize,fieldValue,resetForm,clearForm,clearFields的应用
2016/01/23 Javascript
JS与Ajax Get和Post在使用上的区别实例详解
2016/06/08 Javascript
jquery Banner轮播选项卡
2016/12/26 Javascript
Vue单页式应用(Hash模式下)实现微信分享的实例
2017/07/21 Javascript
移动端触摸滑动插件swiper使用方法详解
2017/08/11 Javascript
vue基于element的区间选择组件
2018/09/07 Javascript
vue项目中在外部js文件中直接调用vue实例的方法比如说this
2019/04/28 Javascript
Vue vm.$attrs使用场景详解
2020/03/08 Javascript
vue中keep-alive内置组件缓存的实例代码
2020/04/16 Javascript
Vue使用Element实现增删改查+打包的步骤
2020/11/25 Vue.js
NestJs使用Mongoose对MongoDB操作的方法
2021/02/22 Javascript
python时间整形转标准格式的示例分享
2014/02/14 Python
在Docker上开始部署Python应用的教程
2015/04/17 Python
Python中的localtime()方法使用详解
2015/05/22 Python
Python判断直线和矩形是否相交的方法
2015/07/14 Python
pandas 中对特征进行硬编码和onehot编码的实现
2019/12/20 Python
使用Tkinter制作信息提示框
2020/02/18 Python
Django框架配置mysql数据库实现过程
2020/04/22 Python
PyQt实现计数器的方法示例
2021/01/18 Python
英国马莎百货官网:Marks & Spencer
2016/07/29 全球购物
Shopbop中文官网:美国亚马逊旗下时尚购物网站
2020/12/15 全球购物
酒店办公室文员岗位职责
2013/12/18 职场文书
微信营销策划方案
2014/02/24 职场文书
大学活动总结范文
2014/04/29 职场文书
2014教师党员自我评议(5篇)
2014/09/20 职场文书
Java 将PPT幻灯片转为HTML文件的实现思路
2021/06/11 Java/Android
解决IIS7下无法绑定https主机的问题
2022/04/29 Servers