JS阻止事件冒泡以及瀏覽器默認行爲

e的兼容


function fn(e){
    var event = e || window.event;
}

FireFox裏的EventIE裏的不一樣,IE裏的是全局變量,隨時可用。FireFox裏的要用參數引導才能用,是運行時的臨時變量
IE/Opera中是window.event,在FireFox中是event。而事件的對象,在IE中是window.event.srcElement,在Firefox中是event.targetOpera中二者均可用瀏覽器

阻止事件冒泡


W3C的方法是e.stopPropagation()IE則是使用e.cancelBubble = true
stopPropagation是事件對象Event的一個方法,做用是阻止目標元素的冒泡事件,可是不會阻止默認行爲
什麼是冒泡事件?如在一個按鈕是綁定一個click事件,那麼click事件會依次在它的父級元素中被觸發,stopPropagation就是阻止目標元素的事件冒泡到父級元素
瞭解更多請點這:理解DOM中的事件流
阻止事件冒泡兼容:dom

function stopPropagation(e) {
    var e = e || window.event;
    if ( e && e.stopPropagation ){
        e.stopPropagation();
    }else{
        e.cancelBubble = true;
    }
}

阻止瀏覽器默認行爲


W3C的方法是e.preventDefault()IE則是使用e.returnValue = false
preventDefault是事件對象Event的一個方法,做用是取消一個目標元素的默認行爲。若是元素沒有默認行爲,調用無效。什麼元素有默認行爲呢?如連接<a href="xxx">點我</a>,提交按鈕<input type=」submit」>code

return false:
JSreturn false只會阻止默認行爲,而jQuery則既阻止默認行爲又防止對象冒泡
阻止瀏覽器默認行爲兼容:對象

function stopDefault(e) {
    var e = e || window.event;
    if (e && e.preventDefault){
        e.preventDefault();
    }else{
        e.returnValue = false;
    }
    return false;
}
相關文章
相關標籤/搜索