JavaScript实现跨浏览器的添加及删除事件绑定函数实例


Posted in Javascript onAugust 04, 2015

本文实例讲述了JavaScript实现跨浏览器的添加及删除事件绑定函数。分享给大家供大家参考。具体如下:

IE 的事件绑定函数是 attachEvent;而 Firefox, Safari 是 addEventListener;Opera 则两种都支持。使用jQuery就可以使用简单的bind(),或者$().click()之类的函数解决,而如果不使用JavaScript框架的时候,大家可是使用下面的封装bind()函数。

添加事件绑定 bind()

/************************************
* 添加事件绑定
* @param obj  : 要绑定事件的元素
* @param type : 事件名称。不加 "on". 如 : "click" 而不是 "onclick".
* @param fn  : 事件处理函数
************************************/
function bind( obj, type, fn ){
  if( obj.attachEvent){
    obj['e'+type+fn]= fn;
    obj[type+fn]=function(){
     obj['e'+type+fn]( window.event);
    }
    obj.attachEvent('on'+type, obj[type+fn]);
  }else
    obj.addEventListener( type, fn,false);
}

例如给document添加一个点击事件:

var fn=function(){
  alert("Hello, World!!");
};
bind(document,"click", fn);

删除事件绑定 unbind()

unbind()对于上面的bind()函数

/************************************
* 删除事件绑定
* @param obj : 要删除事件的元素
* @param type : 事件名称。不加 "on". 如 : "click" 而不是 "onclick"
* @param fn : 事件处理函数
************************************/
function unbind( obj, type, fn ){
  if( obj.detachEvent){
    obj.detachEvent('on'+type, obj[type+fn]);
    obj[type+fn]=null;
  }else
    obj.removeEventListener( type, fn,false);
}

例如删除第一个绑定的document点击事件:

unbind(document,"click",fn);

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
ExtJs之带图片的下拉列表框插件
Mar 04 Javascript
$.format,jquery.format 使用说明
Jul 13 Javascript
Extjs中TabPane如何嵌套在其他网页中实现思路及代码
Jan 27 Javascript
加随机数引入脚本不让浏览器读取缓存
Sep 04 Javascript
Jquery实现图片预加载与延时加载的方法
Dec 22 Javascript
深入了解JavaScript中的Symbol的使用方法
Jul 28 Javascript
vue组件编写之todolist组件实例详解
Jan 22 Javascript
收集前端面试题之url、href、src
Mar 22 Javascript
模块化react-router配置方法详解
Jun 03 Javascript
JavaScript实现轮播图片完整代码
Mar 07 Javascript
Node.js API详解之 tty功能与用法实例分析
Apr 27 Javascript
nuxt.js写项目时增加错误提示页面操作
Nov 05 Javascript
jquery控制显示服务器生成的图片流
Aug 04 #Javascript
JavaScript实现LI列表数据绑定的方法
Aug 04 #Javascript
用js编写的简单的计算器代码程序
Aug 04 #Javascript
javascript记住用户名和登录密码(两种方式)
Aug 04 #Javascript
js实现简易的单数字随机抽奖(0-9)
Mar 19 #Javascript
JavaScript运动减速效果实例分析
Aug 04 #Javascript
JavaScript仿静态分页实现方法
Aug 04 #Javascript
You might like
用session做客户验证时的注意事项
2006/10/09 PHP
用PHP查询域名状态whois的类
2006/11/25 PHP
layui框架实现文件上传及TP3.2.3(thinkPHP)对上传文件进行后台处理操作示例
2018/05/12 PHP
Jquery 学习笔记(一)
2009/10/13 Javascript
基于jquery的防止大图片撑破页面的实现代码(立即缩放)
2011/10/24 Javascript
基于jquery的代码显示区域自动拉长效果
2011/12/07 Javascript
javascript工具库代码
2012/03/29 Javascript
js绑定事件this指向发生改变的问题解决方法
2013/04/23 Javascript
jquery实现div阴影效果示例代码
2013/09/16 Javascript
jquery实现的一个文章自定义分段显示功能
2014/05/23 Javascript
jquery中使用循环下拉菜单示例代码
2014/09/24 Javascript
jquery马赛克拼接翻转效果代码分享
2015/08/24 Javascript
Bootstrap 3的box-sizing样式导致UEditor控件的图片无法正常缩放的解决方案
2016/09/15 Javascript
NodeJS测试框架mocha入门教程
2017/03/28 NodeJs
微信小程序 下拉菜单的实现
2017/04/06 Javascript
解决canvas画布使用fillRect()时高度出现双倍效果的问题
2017/08/03 Javascript
JS实现可视化文件上传
2018/09/08 Javascript
JS 数组和对象的深拷贝操作示例
2020/06/06 Javascript
夯基础之手撕javascript继承详解
2020/11/09 Javascript
[03:37]2014DOTA2国际邀请赛 主赛事第一日胜者组TOPPLAY
2014/07/19 DOTA
python处理json数据中的中文
2014/03/06 Python
Django的HttpRequest和HttpResponse对象详解
2018/01/26 Python
Python求解任意闭区间的所有素数
2018/06/10 Python
Python之inspect模块实现获取加载模块路径的方法
2018/10/16 Python
python子线程退出及线程退出控制的代码
2019/10/16 Python
python实现将一维列表转换为多维列表(numpy+reshape)
2019/11/29 Python
Pytorch的mean和std调查实例
2020/01/02 Python
Python可以实现栈的结构吗
2020/05/27 Python
家得宝官网:The Home Depot(全球最大的家居装饰专业零售商)
2018/12/17 全球购物
小学运动会演讲稿
2014/08/25 职场文书
护士2015年终工作总结
2015/04/29 职场文书
英语专业毕业论文答辩开场白
2015/05/27 职场文书
第一节英语课开场白
2015/06/01 职场文书
Go语言-为什么返回值为接口类型,却返回结构体
2021/04/24 Golang
试了下Golang实现try catch的方法
2021/07/01 Golang
python实现简单的聊天小程序
2021/07/07 Python