一.哪些默认行为要作阻止html
1.a标签连接跳转浏览器
什么是默认行为?一个最简单的例子,我有一个a标签:spa
<a href="https://www.baidu.com/" target="_blank">百度</a>
咱们预览打开,点击百度两个字就会打开百度页面,点击后连接地址跳转就是a标签的默认行为。code
咱们有没有办法在a点击后让他不跳转的处理呢?这是确定有的,a在点击会触发click事件,咱们只要在回调中加入事件阻止方法就能够阻止跳转发生:orm
<a href="https://www.baidu.com/" target="_blank" id="skip">百度</a>
var skip=document.getElementById("skip"); skip.onclick=function(event){ event.preventDefault(); };
再次点击百度,还会停留在当前页面,固然除了调用事件对象的阻止方法还能够用下面的处理:htm
skip.onclick=function(event){ return false; };
2.form表单提交对象
除了a的默认跳转行为,其实表单的提交行为不少时候咱们也要进行阻止,固然是由于有表单验证了,由于输入问题而去阻止提交:事件
<form action="11.html" id="form"> <input type="text" id="text"> <span id="ti"></span> <input type="submit"> </form>
var form=document.getElementById("form"); var text=document.getElementById("text"); var ti=document.getElementById("ti"); form.onsubmit=function(event){ var val=text.value; if(val.length<6){ ti.innerHTML="长度小于6"; event.preventDefault(); }; };
若是input的长度小于6就会提示错误。做为提交表单验证阻止默认是必须的。ip
event.preventDefault();在低级ie存在不兼容问题,可是return false是兼容的。get
结论:
阻止默认行为方法1(高级浏览器/w3c标准的):event.preventDefault()
阻止默认行为方法2:return false
二.event.preventDefault()和return false对比
仍是对表单处理作修改:
var form=document.getElementById("form"); var text=document.getElementById("text"); var ti=document.getElementById("ti"); form.onsubmit=function(event){ var val=text.value; if(val.length<6){ ti.innerHTML="长度小于6"; event.preventDefault(); alert("我在阻止后弹出!") }; };
不会提交跳转,而且弹出了后面的程序。
var form=document.getElementById("form"); var text=document.getElementById("text"); var ti=document.getElementById("ti"); form.onsubmit=function(event){ var val=text.value; if(val.length<6){ ti.innerHTML="长度小于6"; return false; alert("我在阻止后弹出!") }; };
不会提交跳转,不事后面程序不会执行,咱们知道return一经使用就是程序终止,带有break的做用。
有人会想,我return 别的会不会也阻止跳转:
var form=document.getElementById("form"); var text=document.getElementById("text"); var ti=document.getElementById("ti"); form.onsubmit=function(event){ var val=text.value; if(val.length<6){ ti.innerHTML="长度小于6"; return 0; alert("我在阻止后弹出!") }; };
很遗憾,提交成功了。
结论:
只有返回false才会阻止,与return自带break处理无关,阻止行为只是判断你返不返回false。