js跨浏览器事件处理

var EventUtil = {

    addHandler: function(element,type,handler){
        if(element.addEventListener){
            element.addEventListener(type,handler,false);   //添加DOM2事件
        }else if(element.attachEvent){
            element.attachEvent("on"+type,handler);         //添加IE事件
        }else{
            element["on"+type] = handler;                    //添加DOM0事件
        }
    },
    removeHandler: function(element,type,handler){
        if(element.removeEventListener){
            element.removeEventListener(type,handler,false);
        }else if(element.detachEvent){
            element.detachEvent("on"+type,handler);
        }else{
            element["on"+type] = null;
        }
    },
    getEvent : function(event){
        return event ? event : window.event;  //在使用DOM0级事件中中event作为window对象的一个属性存在
    },
    getTarget : function(event){
        return event.target || event.srcElement;  //IE中取得event.srcElement
    },
    preventDefault : function(event){
        if(event.preventDefault){
            event.preventDefault();
        }else{
            event.returnValue = false;  //IE中阻止默认事件
        }
    },
    stopPropagation : function(event){
        if(event.stopPropagation){
            event.stopPropagation();
        }else{
            event.cancelBubble = true;   //IE取消事件冒泡
        }
    }
}

addHandler()视情况分别为DOM0级方法、DOM2级方法或IE方法来添加事件。

removHandler()则是移除事件。

注:DOM0级对每个事件只支持一个事件处理程序。

EventUtil的使用例子,如下

window.onload = function(){
    var btn = document.getElementById("btn");
    EventUtil.addHandler(btn,"click",demo);
    //EventUtil.removeHandler(btn,"click",demo)
    function demo(){
        alert("ckicked !");
    }
}
时间: 2024-07-29 04:15:14

js跨浏览器事件处理的相关文章

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

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

JavaScript 跨浏览器事件处理工具

/** * 跨浏览器事件处理工具.只支持冒泡.不支持捕获 * @author ([email protected]) */ var EventUtil = { getEvent: function (event) { return event || window.event; }, getTarget: function (event) { return event.target || event.srcElement; }, // 返回注册成功的监听器,IE中需要使用返回值来移除监听器 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 跨浏览器实现事件

我们知道不同的浏览器实现事件是不同的,就比如说我们常见的有三种方法: 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 处理时

javaScript跨浏览器事件处理封装代码

var eventUtil = { addhandler:function(element,type,handler){ if(element.addEventListener){//Dom2级事件处理 element.addEventListener(type,handler,false); }else if(element.attachEvent){//Ie浏览器事件处理 element.attachEvent('on'+type,handler); }else{ element['on'+

js跨浏览器事件对象、事件处理程序

项目中有时候会不用jquery这么好用的框架,需要自己封装一些事件对象和事件处理程序,像封装AJAX那样:这里面考虑最多的还是浏览器的兼容问题,原生js封装如下:var EventUtil={ //节点.事件名.事件处理函数 addHanler:function(element,type,handler){ if(element.addEventListener){ element.addEventListener(type,handler,false);//这里一个参数为false意为在事件冒

跨浏览器事件处理

var btn3 = document.getElementById("btn"); function event(){} var eventUtil = { //添加句柄 addHandler:function(element,type,handler){//element表示的是哪个元素,type表示的是事件类型(click,mouseover),handler表示的是处理的函数 if(element.addEventListener)//DOM2级处理函数 element.add

js跨浏览器复制: ZeroClipboard

实例结构: demo.html <script type="text/javascript" src='http://code.jquery.com/jquery.js'></script> <script type="text/javascript" src="ZeroClipboard.js"></script> <script> $(function(){ //选中代码 $('.t

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