preventDefault()與return false區別
關於兩者的具體用法可以參閱如下兩篇文章:
(1).JavaScript return 語句一章節。
(2).JavaScript preventDefault()一章節。
preventDefault是一個方法,return false是函式返回值。
兩者之間的區別是十分明顯的,甚至可以說從直覺上兩者功能並無任何相同之處。
但是它們卻有一個共同之處,都能夠阻止事件的預設行為。
首先看一段程式碼例項:
[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 one = document.getElementById("one"); let two = document.getElementById("two"); one.onclick = function (ev) { ev.preventDefault(); } two.onclick = function (ev) { return false; } } </script> </head> <body> <div><a href="http://www.softwhy.com" id="one">螞蟻部落一</a></div> <div><a href="http://www.softwhy.com" id="two">螞蟻部落二</a></div> </body> </html>
點選連結會出現連結跳轉動作,這個跳轉動作對連結<a>元素來說就是click事件預設行為。
上述程式碼中,點選連結都不能實現連結的跳轉行為,可見兩種方式都可以阻止預設行為。
僅從上面例子看,在阻止預設行為方面是完全一致的,但是兩者還是有區別的。
特別說明:本文介紹的是原生JavaScript中preventDefault方法與return false之間的區別。
程式碼例項如下:
[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 one = document.getElementById("one"); let two = document.getElementById("two"); one.addEventListener('click', function(event) { return false; }, false); two.onclick = function (ev) { return false; } } </script> </head> <body> <div><a href="http://www.softwhy.com" id="one">螞蟻部落一</a></div> <div><a href="http://www.softwhy.com" id="two">螞蟻部落二</a></div> </body> </html>
程式碼分析如下:
(1).第一個連結使用addEventListener方式註冊click事件處理函式。
(2).第二個連結使用屬性方式註冊事件處理函式。
(3).在第一種方式中,return false阻止預設行為的功能失效,但是第二種方式依然有效。
(4).如果將第一種方式中的return false替換為ev.preventDefault()可以實現阻止預設行為的功能。
總結如下:
(1).如果不考慮瀏覽器相容問題,preventDefault方法阻止預設行為專業且全面的,return false乾的是副業。
(2).return false在addEventListener註冊的事件處理函式中無法阻止事件預設行為,畢竟它不是專業的。
最後再強調一下,上述總結的區別一定是在原生JavaScript中,有些封裝庫或者外掛修改了這一行為。
相關文章
- CSS 中 stopPropagation, preventDefault 和 return false 的區別CSSFalse
- preventDefault,stopPropagation,return false三者的區別False
- js中return、return true、return false的區別JSFalse
- js跳出迴圈的方法區別( break, continue, return ) 及 $.each 的(return true 和 return false)...JSFalse
- JavaScript return falseJavaScriptFalse
- JavaScript return false的作用JavaScriptFalse
- 'return await promise' 與 'return promise' 這細微的區別AIPromise
- return false影響事件冒泡False事件
- exit(0)與exit(1)、return的區別
- jQuey return false作用是什麼False
- js事件之event.preventDefault()與event.stopPropagation()用法區別JS事件
- break,continue,return區別
- exit和return的區別
- Break,Continue,Return的區別
- 原生javascript的return false並不能阻止事件冒泡JavaScriptFalse事件
- [轉] 由表單中 onsubmit="return false;" 想到的MITFalse
- onclick="return check()" 和 onclick="check()" 區別
- JavaScript中0, "", null, false, undefined的區別JavaScriptNullFalseUndefined
- 不要用return false阻止event的預設行為False
- C++中的return和exit區別C++
- ruby中proc和lambda的return區別
- return、break、continue三者區別
- 解析php中die(),exit(),return的區別PHP
- Python教程:return和yield的區別Python
- display:none 和visible:false 的區別(轉)NoneFalse
- TIMED_STATISTICS 設定true 或 false 區別False
- JavaScript--分支+迴圈(continue、break、return的區別)JavaScript
- C#中continue、return、break的區別及作用C#
- JavaScript preventDefault()JavaScript
- Flutter url_launcher 報錯 canLaunch will return false(Android)的解決辦法FlutterFalseAndroid
- &與&&, |與||區別
- true || false && falseFalse
- Python解惑:True與FalsePythonFalse
- jQuery event.preventDefault()jQuery
- 內部Fragment設定為public static和checkReleaseBuilds false與abortOnError falseFragmentUIFalseError
- ??與?:的區別
- <section>與<article> 區別
- showModal()與show() 區別