• javascript处理事件的一些兼容写法


    绑定事件

    addEventListener:W3C标准写法IE不兼容

    attachEvent:兼容IE

    注意:1:事件名不同:IE下要加“on“,W3C不加

            2:加载事件的执行顺序不同,W3C按绑定事件的顺序来执行,而IE6,7是后绑定的时间先发生

            3:this的指向,W3C中,绑定函数中的this指向DOM对象,而IE6,7指向WINDOWS对象

     

    复制代码
    var addEvent = function( obj, type, fn ) {
        if (obj.addEventListener)
            obj.addEventListener( type, fn, false );
        else if (obj.attachEvent) {
            obj["e"+type+fn] = fn;
            obj.attachEvent( "on"+type, function() {
                obj["e"+type+fn]();
            } );
        }
    };
    复制代码

     

     

    另一个实现

     
    复制代码
    var addEvent = (function () { 
        if (document.addEventListener) { 
            return function (el, type, fn) { 
                el.addEventListener(type, fn, false); 
            }; 
        } else { 
            return function (el, type, fn) { 
                el.attachEvent('on' + type, function () { 
                    return fn.call(el, window.event); 
                }); 
            } 
        } 
    })();
    复制代码
     
     

    移除事件

     
    复制代码
    var removeEvent = function(obj, type, fn) {
        if (obj.removeEventListener)
            obj.removeEventListener( type, fn, false );
        else if (obj.detachEvent) {
            obj.detachEvent( "on"+type, obj["e"+type+fn] );
            obj["e"+type+fn] = null;
        }
    }
    复制代码
     
     

    加载事件与脚本

     
     
    复制代码
    var loadEvent = function(func) {
        var oldonload = window.onload;
        if (typeof window.onload != 'function') {
            window.onload = func;
        }else {
            window.onload = function() {
                oldonload();
                func();
            }
        }
    }
    复制代码
     
     

    阻止事件

     
    复制代码
    var cancelEvent = function(event) {
        event = event||window.event
        if (event.preventDefault) {
            event.preventDefault(  );
            event.stopPropagation(  );
        } else {
            event.returnValue = false;
            event.cancelBubble = true;
        }
    }
    复制代码
     
      

    取得事件源对象

    相当于Prototype.js框架的Event.element(e)

     
    var getTarget = function(event){
        event = event || window.event;
        var obj = event.srcElement ? event.srcElement : event.target;
        return obj
    }
     
  • 相关阅读:
    sizeof()和 strlen()的区别 --- 个人笔记
    MySQL 生成自增流水号
    sql 逗号分隔列转行
    【转】.NET中lock的使用方法及注意事项
    【转】在一个SQL Server表中一行的多个列找出最大值
    使用 PIVOT 和 UNPIVOT
    List<T>转DataTable
    C# 分数计算类(加减乘除)
    【转】mysql执行计划介绍
    【转】SQL Server 存储:理解IAM 页
  • 原文地址:https://www.cnblogs.com/lglijing/p/3337353.html
Copyright © 2020-2023  润新知