详解javascript跨浏览器事件处理程序
作者:bea
本文为大家分享了javascript跨浏览器事件处理机制,供大家参考,具体内容如下 <!doctype html><html lang="en"><head> <meta charset="UTF-8"> <title>跨浏览器的事件处理程序</title></head><body> <input type="button" value="click me" id=
本文为大家分享了javascript跨浏览器事件处理机制,供大家参考,具体内容如下
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>跨浏览器的事件处理程序</title>
</head>
<body>
<input type="button" value="click me" id="myBtn"/>
<input type="button" value="解除" id="unlisten"/>
<script>
function $(id){
return document.getElementById(id);
}
var EventUtil={
fnCount:0
,fnData:{}
,addHandler:function(element,type,handler){
this.fnCount++;
handler.fid = this.fnCount;
var _fn = handler;
handler = function(){
_fn.call(element);
};
this.fnData[this.fnCount] = handler;
if(element.addEventListener){
element.addEventListener(type,handler,false);
} else if(element.attachEvent){
element.attachEvent("on"+type,handler);
} else {
element["on"+type]=handler;
}
}
,removeHandler:function(element,type,handler){
handler = this.fnData[handler.fid];
if(element.removeEventListener){
element.removeEventListener(type,handler,false);
}else if(element.detachEvent){
element.detachEvent("on"+type,handler);
}else{
element["on"+type]=null;
}
}
}
var btn=$("myBtn");
var unbtn = $('unlisten');
var bindFn1=function(){
alert(this.id);
};
var bindFn2=function(){
alert('2');
};
EventUtil.addHandler(btn,"click",bindFn1);
EventUtil.addHandler(btn,"click",bindFn2);
//EventUtil.removeHandler(btn,"click",bindFn1);
EventUtil.addHandler(unbtn,"click",function(){
EventUtil.removeHandler(btn,"click",bindFn1);
});
</script>
</body>
</html>
以上就是本文的全部内容,希望对大家的学习有所帮助。
有用 | 无用
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>跨浏览器的事件处理程序</title>
</head>
<body>
<input type="button" value="click me" id="myBtn"/>
<input type="button" value="解除" id="unlisten"/>
<script>
function $(id){
return document.getElementById(id);
}
var EventUtil={
fnCount:0
,fnData:{}
,addHandler:function(element,type,handler){
this.fnCount++;
handler.fid = this.fnCount;
var _fn = handler;
handler = function(){
_fn.call(element);
};
this.fnData[this.fnCount] = handler;
if(element.addEventListener){
element.addEventListener(type,handler,false);
} else if(element.attachEvent){
element.attachEvent("on"+type,handler);
} else {
element["on"+type]=handler;
}
}
,removeHandler:function(element,type,handler){
handler = this.fnData[handler.fid];
if(element.removeEventListener){
element.removeEventListener(type,handler,false);
}else if(element.detachEvent){
element.detachEvent("on"+type,handler);
}else{
element["on"+type]=null;
}
}
}
var btn=$("myBtn");
var unbtn = $('unlisten');
var bindFn1=function(){
alert(this.id);
};
var bindFn2=function(){
alert('2');
};
EventUtil.addHandler(btn,"click",bindFn1);
EventUtil.addHandler(btn,"click",bindFn2);
//EventUtil.removeHandler(btn,"click",bindFn1);
EventUtil.addHandler(unbtn,"click",function(){
EventUtil.removeHandler(btn,"click",bindFn1);
});
</script>
</body>
</html>
以上就是本文的全部内容,希望对大家的学习有所帮助。
有用 | 无用
猜你喜欢
您可能感兴趣的文章:
- Jquery操作cookie记住用户名
- jQuery简单实现提交数据出现loading进度条的方法
- Javascript设计模式之观察者模式(推荐)
- AngularJS directive返回对象属性详解
- Boostrap模态窗口的学习小结
- 理解javascript模块化
- 谈一谈jQuery核心架构设计
- Nodejs如何搭建Web服务器
- javascript函数自动执行常用方法汇总
- JavaScript利用HTML DOM进行文档操作的方法
- JavaScript常用本地对象小结
- Bootstrap 粘页脚效果
- jQuery实现的多滑动门,多选项卡效果代码
- 轻量级jQuery插件slideBox实现带底栏轮播(焦点图)代码
- jQuery实时显示鼠标指针位置和键盘ASCII码
- 通过Tabs方法基于easyUI+bootstrap制作工作站
- jQuery实现的精美平滑二级下拉菜单效果代码
- JavaScript html5 canvas绘制时钟效果(二)
- Bootstrap每天必学之级联下拉菜单