您当前的位置:首页 > 网站建设笔记 >

ADS.addEvent()和ADS.removeEvent()方法

来源:JavaScript DOM 高级程序设计0

ADS.addEvent() 和 ADS.removeEvent() 方法

<script type="text/javascript">
function addEvent(node, type, listener){
    if(!isCompatible()){return false;}
    if(!(node=$(node))){return false;}
    if(node.addEventListener){
        //W3C的方法
        node.addEventListener(type, listener, false);
        return true;
    }else if(node.attachEvent){
        //MSIE的方法
        node["e"+type+listener] = listener;
        node[type+listener] = function(){
            node["e"+type+listener](window.event);
        }
        node.attachEvent("on"+type, node[type+listener]);
        return true;
    }
    //若两种方法都不具备则返回false
    return false;
};
window["ADS"]["addEvent"] = addEvent;

function removeEvent(node, type, listener){
    if(!(node=$(node))){return false;}
    if(node.removeEventListener){
        //W3C的方法
        node.removeEventListener(type, listener, false);
        return true;
    }else if(node.detachEvent){
        //MSIE的方法
        node.detachEvent("on"+type, node[type+listener]);
        node[type+listener] = null;
        return true;
    }
    //若两种方法都不具备则返回false
    return false;
};
window["ADS"]["removeEvent"] = removeEvent;
</script>

可以使用这个方法为一个窗口添加多个载入事件:

function sayHello(){
    alert("Hello");
}
ADS.addEvent(window, "load", sayHello);

function sayGoodbye(){
    alert("Goodbye");
}
ADS.addEvent(window, "load", sayGoodbye);

这样,当窗口载入时,你会看到两个警告框:一个显示Hello,另一个显示Goodbye(但不一定是按照这个顺序)。如果你要编写多个库,而每个库都需要自己的载入事件,那么拥有多个载入事件侦听器就非常有用了。因为这样你只需使用ADS.addEvent(window, "load", ...)为每个库添加它自己的载入事件即可,而不必编写新的,组合而成的window.onload函数,并在该函数中包含来自每个对象的事件了。

请记住第二个参数不包含on前缀(你通常会在DOM元素的事件属性中看到on前缀)。onload这样的标识符表示的是一个对象的具体属性,而简化术语load则在W3C的addEventListener()方法识别事件所必须的。因此,要用ADS.addEvent(window, "load", initPage),而不能用ADS.addEvent(window, "onload", initPage)。

建站咨询

在线咨询真诚为您提供专业解答服务

咨询热线

137 1731 25507×24小时服务热线

微信交流

二维码终于等到你,还好我没放弃
返回顶部