js 跨浏览器实现事件

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

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...  })()

时间: 2024-10-12 08:47:25

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

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

1 var EventUtil = { 2 addHandler: function(element, type, handler) { 3 if (element.addEventListener) { 4 element.addEventListener(type, handler, false); 5 } else if (element.attachEvent) { 6 element.attachEvent('on' + type, handler); 7 } else { 8 ele

JS跨浏览器二级事件

var eventUtil={ addHandler:function(element,type,handler){ if(element.addEventListener){ element.addEventListener(type,handler,false); } else if(element.attachEvent){ element.attachEvent('on'+type,handler); } else{ element['on'+type]=handler; } }, re

跨浏览器【事件处理程序】和【事件对象】

和require.js没关系,只是最近看了拿来练练手~~ 1.html(引用require.js模块) <!DOCTYPE html> <html> <head> <style type="text/css"> #div{ background-color: yellow; width:200px; height:200px; opacity: 0.5; } #a{ display: block; background-color: gr

JS 事件(4)——跨浏览器的事件对象

跨浏览器的事件对象详解 封装事件对象 1 var event_util = { 2 //添加事件 3 addHandler: function(element, type, handler) { 4 if(element.addEventListener) { 5 element.addEventListener(type, handler, false); 6 } else if(element.attachEvent) { 7 element.attachEvent("on" +

js跨浏览器事件处理程序

<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> </head> <body> <div id="myDiv"> aaaaaaaaaaaaaaaaaaa </div> <ul id="myMenu" style="position:absolute;visibility:hidd

【js事件详解】js事件封装函数,js跨浏览器事件处理机制

一.事件流 事件流描述的是从页面中接受事件的顺序.IE的事件流是事件冒泡流,而Netscape的事件流是事件捕获流1.事件冒泡事件冒泡,即事件最开始由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上转播至最不具体的节点(文档).2.事件捕获事件捕获的思想是不太具体的节点应该更早接收到事件,而最具体的节点最后接收到事件. 相关知识链接:js的事件冒泡和事件捕获 二.事件处理程序 1.HTML事件处理程序2.DOM0级事件处理程序3.DOM2级事件处理程序 DOM2级事件定义了两个方法

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

事件对象    在触发DOM上的某个事件时,会产生一个事件对象event,这个对象中包含着所有与事件有关的信息.包括导致事件的元素.事件的类型,以及其他与特定事件相关的信息.例如,鼠标操作导致的事件对象中,会包含鼠标位置的信息,而键盘操作导致的事件对象中,会包含与按下的键有关的信息.所有浏览器对象都支持event对象,但支持方式不同. DOM中的事件对象 兼容DOM的浏览器会将一个event对象传入到事件处理程序中.无论指定事件处理程序时使用什么方法(DOM0级或DOM2级),都会传入event

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

用JavaScript实现事件的绑定,移除,以及一些常用的事件属性的获取,时常要考虑到在不同浏览器下的兼容性,下面给出了一个跨浏览器的事件对象: var EventUtil = { on: function(element, type, handler) {/* 添加事件 */ if (element.addEventListener) { element.addEventListener(type, handler, false); } else if (element.attachEvent

跨浏览器resize事件分析

resize事件 原生事件分析 window一次resize事件: IE7 触发3次, IE8 触发2次, IE9 触发1次, IE10 触发1次 Chrome 触发1次 FF 触发2次 Opera 触发1次 Safari 触发1次 场景分析 window resize时,部分组件需要重置大小(一次):部分组件不需要重置大小: 开源库分析 jquery-resize 优点:使用简便 $('#div1').on('resize', function (e) { console.log('[div1