JS-阻斷事件傳播:stopPropagation,preventDefault以及stopImmediatePropagation


  最近遇到一個需求,在一定情況下,需要阻斷blur的事件傳播。搜索之后找到三個函數,第一個是preventDefault,第二個是stopPropagation,第三個是stopImmediatePropagation 。

  preventDefault:

      語法是:

          event.stopPropagation();

       這個函數的作用是阻止事件進一步冒泡,進而被其他節點接收。

  preventDefault:

     語法是:

          event.preventDefault();

       這個函數與前者不同在於他阻止的是事件默認的動作,但是並不會阻止事件的繼續傳播。例如<a>標簽的click默認的動作是打開鏈接。但是使用這個函數之后會阻止這個動作。但同時這個事件可以傳播給這個標簽或者原遠的click listener. 但是這個函數只支持cancelable的事件。可以通過event.cancelable來檢查。同時在事件的任一階段調用這個函數意味着默認的動作都不會執行。

    參考:https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault

  stopImmediatePropagation:
      語法:

          event.stopImmediatePropagation();

      這個函數用於阻斷同一element的事件傳播。 例如一個element上定義了多個listener,如果其中一個調用這個方法后面的listener則都不會執行。

 

另外,還有return false,這種方式確實可以阻止事件默認行為的執行,例如form的submit,但是有的人提到這個辦法還包含其他內容例如退出循環等等,所以顯得不夠靈活。

最后,我的需求是監聽window.blur的,所以,只能先於原有的監聽器的前面先執行判斷,條件滿足則執行stopImmediatePropagation 來阻止它傳遞到頁面的監聽器。

       

  

 

 

 

 

  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM