我们知道不同的浏览器实现事件是不同的,就比如说我们常见的有三种方法:

1,dom0处理事件的方法,以前的js处理事件都是这样写的。

  (function () {
var p=document.getElementById("huchao1");
//dom0处理方法
p.onclick=function (a) {
console.log(a.type);
// body...
}
//移除方法如下:
p.onclick=null; // body...
})()

2,dom2 处理时间的方法 如下:可以同时添加两个相同的事件类型,移除这个时间的时候,函数必须不是匿名函数,否则不起作用

 (function () {
var a=document.getElementById("huchao1");
a.addEventListener("click",function () {
console.log(this.id);
// body...
// false 表示在冒泡阶段
},false);
a.addEventListener("click",function () {
console.log("alll");
// body...
},false);
//这样移除不起作用,函数必须不是匿名函数
a.removeEventListener("click",function () {
// body...
},false);
// body...
})()

3,ie处理事件,删除事件detachEvent 注意此处是onclick ,不是click

       (function () {
var btn=document.getElementById("huchao1");
btn.attachEvent("onclick",function () {
alert("dd");
// body...
})
// body...
})()

如何写一个跨浏览器的事件处理程序呢:综上所述如下:

   (function () {
var EventUtil={
addHandler:function (element,type,Handler) {
//此处dom2事件
if (element.addEventListener) {
//false表示冒泡阶段
element.addEventListener(type,Handler,false);
}else if(element.attachEvent){
//ie处理事件
element.attachEvent("on"+type,Handler); }else{
//dom0处理事件
element["on"+type]=Handler; }
// body...
},
removeHandler:function (element,type,Handler) {
// body...
if (element.addEventListener) {
element.removeEventListener(type,Handler,false);
}else if(element.attachEvent){
element.removeEvent("on"+type,Handler); }else{
element["on"+type]=null; }
}
}
var btn=document.getElementById("huchao1");
var handler=function () {
alert("huchao");
// body...
}
EventUtil.addHandler(btn,"click",handler);
EventUtil.removeHandler(btn,"click",handler);
// body...
})()

(function () {  var p=document.getElementById("huchao1");  //dom0处理方法     p.onclick=function (a) {  console.log(a.type);  // body...  }  //移除方法如下:   p.onclick=null;
  // body...  })()

js 跨浏览器实现事件的更多相关文章

  1. js 跨浏览器获取事件信息模块

    var EventUtil = { addHandler: function(element, type, handler) { if (element.addEventListener) { ele ...

  2. js实现一些跨浏览器的事件方法

    用JavaScript实现事件的绑定,移除,以及一些常用的事件属性的获取,时常要考虑到在不同浏览器下的兼容性,下面给出了一个跨浏览器的事件对象: var EventUtil = { on: funct ...

  3. js事件对象--DOM中的事件对象/IE中的事件对象/跨浏览器的事件对象

    事件对象    在触发DOM上的某个事件时,会产生一个事件对象event,这个对象中包含着所有与事件有关的信息.包括导致事件的元素.事件的类型,以及其他与特定事件相关的信息.例如,鼠标操作导致的事件对 ...

  4. Javascript跨浏览器的事件对象

    一.跨浏览器的事件对象 var EventUtil = { ///添加事件 addHandler: function (element, type, handler) { if (element.ad ...

  5. JS跨浏览器的事件处理

    1. 事件流 事件:用户或浏览器自身执行的某种动作.如click(点击事件).mouse***(鼠标事件). 事件流:页面中接收事件的顺序,也可理解为事件在页面中传播的顺序. DOM事件流包括三个阶段 ...

  6. 跨浏览器的事件对象-------EventUtil 中的方法及用法

    什么是EventUti----封装好的事件对象 在JavaScript中,DOM0级.DOM2级与旧版本IE(8-)为对象添加事件的方法不同 为了以跨浏览器的方式处理事件,需要编写一段“通用代码”,即 ...

  7. js关闭浏览器窗口事件

    js关闭浏览器窗口 js关闭浏览器窗口,不弹出提示框.支持ie6+,火狐,谷歌等浏览器. <html> <head /> <body> <script typ ...

  8. JavaScript跨浏览器绑定事件函数的优化

    JavaScript作为一门基于事件驱动的语言(特别是用在DOM操作的时候),我们常常需要为DOM绑定各种各样的事件.然而,由于低版本的IE的不给力,在绑定事件和移除事件监听上都与众不同,我们常常需要 ...

  9. EventUtil——跨浏览器的事件对象

    . 首页 博客园 联系我 前言:什么是EventUtil?. EventUtil对象全见. addHandler方法. removeHandler方法. event对象与getEvent方法. tar ...

随机推荐

  1. Vue表格数据增删改查及搜索

    <div id="app"> <div class="item"> <span class="name"> ...

  2. zynq交叉编译环境设置

    环境准备 Vmware 虚拟机:ubuntu14.04 下载安装文件 环境设置 按照上面地址下载 xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin 将das ...

  3. bzoj2806

    广义后缀自动机+二分+单调队列+dp 这道题其实就是一个简单dp,dp[i]表示匹配到i最长匹配多少,设val[i]表示当前位置和原串的最长公共长度,二分的长度是L,那么要求dp[i]=max(dp[ ...

  4. NLTK vs SKLearn vs Gensim vs TextBlob vs spaCy

    Generally, NLTK is used primarily for general NLP tasks (tokenization, POS tagging, parsing, etc.) S ...

  5. Ubuntu 图形处理软件

    sudo add-apt-repository ppa:dhor/myway sudo apt-get update sudo apt-get install photivo

  6. 调试 Hadoop 源代码

    环境是 64bit Ubuntu 14.04 系统, jdk 1.7 以及 Eclipse Mars (4.5) 这里介绍两种调试 Hadoop 源代码的方法: 利用 Eclipse 远程调试工具和打 ...

  7. webix前端架构的项目应用(项目框架为Web API+autofac+ioc+mysql+webix)

    webix框架兼容javascript.HTML.CSS,应用比较灵活,应用框架时,配合后台webAPI,整个web项目里面,App文件夹保存前台的多语言文件,图片文件,webix原代码js.css, ...

  8. bugfree-解决方案的意思

    BugFree的7种解决方案各自的含义: By Design - 就是这么设计的,无效的Bug Duplicate - 这个问题别人已经发现了,重复的Bug External - 是个外部因素(比如浏 ...

  9. DOM学习笔记(一)DOM树

    DOM 定义了访问和操作 HTML 文档的标准方法. HTML 文档中的所有内容都是节点,将 HTML 文档表达为树结构,称为节点树 HTML DOM 树 HTML DOM 是关于如何获取.修改.添加 ...

  10. 创建Python本地副本

    创建本地副本后可以避免解释器找不到模块的情况. 1. 创建一个测试用的pl.py def printTest(): print("this is a test") 2. 将pl.p ...