• 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
    }
  • 相关阅读:
    UPC2018组队训练赛第二场
    杭电多校训练第十场
    socks5 代理
    windows pip 报错Unable to find vcvarsall.bat
    emacs笔记
    homestead oci8
    pyenv install
    chrome 设置sock5代理
    laravel 接收post json
    laravel 使用已有数据库自动创建model
  • 原文地址:https://www.cnblogs.com/mingjixiaohui/p/5246353.html
Copyright © 2020-2023  润新知