阻止事件冒泡和取消浏览器默认行为

//方案1: 不好的写法
function processEvent(e){
    e = arguments.callee.caller.arguments[0] || e;
    if(e && e.stopPropagation){
        e.stopPropagation();
    }else if(window.event){
        window.event.cancelBubble = true;
    }
    if(e && e.preventDefault){
        e.preventDefault();
    }else if(window.event){
        window.event.returnValue = false;
    }
}

// 方案2:建议使用此方案
// 阻止冒泡
function processBubble(e){
    e = arguments.callee.caller.arguments[0] || e;
    if(e && e.stopPropagation){
        e.stopPropagation();
    }else if(window.event){
        window.event.cancelBubble = true;
    }
}
// 阻止浏览器默认行为
function processDefault(e){
    e = arguments.callee.caller.arguments[0] || e;
    if(e && e.preventDefault){
        e.preventDefault();
    }else if(window.event){
        window.event.returnValue = false;
    }
}
// 阻止冒泡和默认行为
function processBubbleAndDefault(e){
    processBubble(e);
    processDefault(e);
}

猜你喜欢

转载自my.oschina.net/u/1773772/blog/1623559