首頁  >  文章  >  web前端  >  阻止事件冒泡

阻止事件冒泡

巴扎黑
巴扎黑原創
2016-11-25 13:33:52914瀏覽

JavaScript停止冒泡並阻止瀏覽器預設行為 

事件相容 

Js代碼  

function myfn(e){  

}  

js停止冒泡 



Js代碼  

function myfn(e){  

    window.event window

js阻止預設行為 

Js程式碼  


function myfn(e){  

    window.event? window.event.returnValue = false : .prefault();

w3c的方法是e.stopPropagation( ),IE則是使用e.cancelBubble = true。 

stopPropagation也是事件物件(Event)的一個方法,作用是阻止目標元素的冒泡事件,但是會不阻止預設行為。

js阻止預設行為: 

w3c的方法是e.preventDefault(),IE是使用e.returnValue = false; 

preventDefault它是事件物件(Event)的一個方法,作用是取消一個目標元素的預設值行為。 

既然是說預設行為,當然是元素必須有預設行為才能被取消,如果元素本身就沒有預設行為,呼叫當然就無效了。 


什麼元素有預設行為呢?如連結,提交按鈕等。 
當Event 物件的 cancelable為false時,表示沒有預設行為,這時即使有預設行為,呼叫preventDefault也是不會運作的。 

return false: 
javascript的return false只會阻止預設行為,而是用jQuery的話則既阻止預設行為又防止物件冒泡。

總結使用方法: 
當需要停止冒泡行為時,可以使用 


Js代碼  

function stopBubble(e) {  if ( e && e.stopPropagation )   

    //因此它支援W3C的stopPropagation()方法   

    //否則,我們需要使用IE的方式來取消事件冒泡   

    window.event.cancelBubble = true;   

}  

當需要阻止預設瀏覽器

function stopDefault( e ) {   

    //阻止預設瀏覽器動作(W3C)   

    if ( e && e.preventDefault )  

    //IE中阻止函數器預設動作的方式   

    else   

        window.event .returnValue = false;   

    return false;   

}  

事件按鍵: event物件只在事件發生的過程中才有效。 

firefox裡的event跟IE裡的不同,IE裡的是全域變量,隨時可用; 
firefox裡的要用參數引導才能用,是運行時的臨時變量。 

在IE/O​​pera中是window.event,在Firefox中是event; 

而事件的對象,在IE中是window.event.srcElement, 

在Firefox中是event.target,Opera中兩者都可用。

下面兩句效果相同: 

Js代碼  

//code from http://caibaojian.com/script-stoppropagation-preventdefault.html e) ? e : ((window.event) ? window.event : null);   

var e = e || window.event; // firefox下window.eventn為eventn, feventno.

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn