JavaScript preventDefault()
此方法可以阻止事件的預設動作,它的名稱也體現了這一點。
preventDefault由prevent和default合成,prevent表示"阻止",default則表示"預設"或"預設"。
預設動作,就是一個事件觸發後瀏覽器預設動作行為。
比如點選超連結會出現跳轉動作,這個跳轉動作就是連結click事件的預設行為。
此方法符合W3C標準。
語法結構:
[JavaScript] 純文字檢視 複製程式碼event.preventDefault()
瀏覽器支援:
(1).IE9+瀏覽器支援此方法。
(2).edge瀏覽器支援此方法。
(3).谷歌瀏覽器支援此方法。
(4).opera瀏覽器支援此方法。
(5).火狐瀏覽器支援此方法。
(6).safria瀏覽器支援此方法。
程式碼例項:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> div { width:150px; height:30px; line-height:30px; margin:0px auto; } </style> <script type="text/javascript"> window.onload=function() { let olink = document.getElementById("ant"); olink.onclick = function (ev) { ev.preventDefault(); } } </script> </head> <body> <div><a href="http://www.softwhy.com" id="ant">螞蟻部落一</a></div> <div><a href="http://www.softwhy.com">螞蟻部落二</a></div> </body> </html>
上述程式碼當點選第一個連結不會出現跳轉行為,原因分析如下:
(1).為第一個連結註冊click事件處理函式。
(2).點選第一個連結原本會發生兩件事情,執行事件處理函式,然後連結跳轉,但是由於時間處理函式中呼叫了preventDefault方法,會阻止預設動作,所以不會出現跳轉現象。此方法低版本IE瀏覽器不支援,如果有相容低版本IE的需求,可以進行如下改造。
程式碼例項如下:
[JavaScript] 純文字檢視 複製程式碼if (e && e.preventDefault) { e.preventDefault(); }else{ window.event.returnValue = false; }
上述程式碼片段實現了相容所有主流瀏覽器的功能,很簡單不多介紹。
preventDefault方法與return false:
大家知道return false也具有阻止預設動作的功能。
關於return false更多內容可以參閱JavaScript return false一章節。
那麼為什麼還要單獨設計一個preventDefault方法,豈不是多此一舉。
兩者還是有不小區別,有時候return false不能完成阻止預設動作的功能,只能preventDefault出手。
具體區別可以參閱preventDefault與return false區別一章節。
相關文章
- jQuery event.preventDefault()jQuery
- preventDefault()與return false區別False
- event.preventDefault()和event.stopPropagation()
- JS-preventDefault() 取消預設行為JS
- Unable to preventDefault inside passive event listenerIDE
- CSS 中 stopPropagation, preventDefault 和 return false 的區別CSSFalse
- preventDefault,stopPropagation,return false三者的區別False
- 解決滾動警告:Unable to preventDefault inside passive event listenerIDE
- js事件之event.preventDefault()與event.stopPropagation()用法區別JS事件
- 阻止事件冒泡(stopPropagation和cancelBubble)和阻止預設行為(preventDefault和returnValue)事件
- JavaScript高階:JavaScript物件導向,JavaScript內建物件,JavaScript BOM,JavaScript封裝JavaScript物件封裝
- javaScript系列[06]-javaScript和thisJavaScript
- 【JavaScript學習】JavaScript物件建立JavaScript物件
- 【轉】eval()函式(javascript) - [javaScript]函式JavaScript
- [Javascript] How javascript read the property?JavaScript
- JavaScript -"this"JavaScript
- javascript ??JavaScript
- This in JavaScriptJavaScript
- “This” is For JavaScriptJavaScript
- javascript thisJavaScript
- JavaScriptJavaScript
- javaScript系列[05]-javaScript和JSONJavaScriptJSON
- 44 道 JavaScript 難題(JavaScript Puzzlers!)JavaScript
- 【轉向JavaScript系列】AST in Modern JavaScriptJavaScriptAST
- javascript,還是javascript的問題JavaScript
- JavaScript 教程之JavaScript常用框架簡介JavaScript框架
- 《深入理解JavaScript》——2.3 JavaScript有用嗎JavaScript
- 【JavaScript】--JavaScript總結一覽無餘JavaScript
- 【HTML、JAVASCRIPT、CSS】3、Javascript基本概念HTMLJavaScriptCSS
- [Javascript] Understanding JavaScript Proxies with Symbol.toPrimitiveJavaScriptSymbolMIT
- JavaScript EventJavaScript
- JavaScript BackdoorJavaScript
- JavaScript normalize()JavaScriptORM
- JavaScript setDate()JavaScript
- JavaScript setMinutes()JavaScript
- JavaScript getDate()JavaScript
- JavaScript setHours()JavaScript
- JavaScript setUTCMinutes()JavaScript