JavaScript-Javascript中return false 与 event.preventDefault() 的区别?
event.preventDefault() 和 return false 都可以终止程序,二者有什么异同点?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
event.preventDefault() 和 return false 都可以终止程序,二者有什么异同点?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
说一下事件传送机制就可以明白了
事件传递机制:
例如鼠标被按下后,mousedown事件被触发。
事件先从document->ancestor element->...->parent->event.target(在此元素上按下的鼠标)->parent->...->ancestor element->document.
事件走了一个循环,从documet到event.target再回到document,从event.target到document的过程叫做冒泡。
event.stopPropagation(); // 事件停止冒泡到,即不让事件再向上传递到document,但是此事件的默认行为仍然被执行,如点击一个链接,调用了event.stopPropagation(),链接仍然会被打开。
event.preventDefault(); // 取消了事件的默认行为,如点击一个链接,链接不会被打开,但是此事件仍然会传递给更上一层的先辈元素。
在事件处理函数中使用 return false; 相当于同时调用了event.stopPropagation()和event.preventDefault(),事件的默认行为不会被执行,事件也不会冒泡向上传递。
return false;
等效于调用e.preventDefault();以及e.stopPropagation();,所以区别在于,return false除了阻止默认行为之外,还会阻止event flowh.
event.preventDefault()是终止事件的默认行为。
比如keyboard事件,使用该方法后,将终止默认输入的行为。
return false只是退出当前函数的处理逻辑,并不能终止事件的默认行为。
<textarea onkeydown="keydown(event)"></textarea>
<script>
function keydown(evt){
evt = evt ? evt : window.event;
if(evt.preventDefault){
evt.preventDefault();
}
return false;
}
</script>