JavaScript-Javascript中return false 与 event.preventDefault() 的区别?

发布于 2016-11-06 05:46:33 字数 62 浏览 1039 评论 3

event.preventDefault() 和 return false 都可以终止程序,二者有什么异同点?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

泛泛之交 2017-01-20 08:04:36

说一下事件传送机制就可以明白了
事件传递机制:
例如鼠标被按下后,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(),事件的默认行为不会被执行,事件也不会冒泡向上传递。

夜无邪 2016-12-21 05:20:05

return false;
等效于调用e.preventDefault();以及e.stopPropagation();,所以区别在于,return false除了阻止默认行为之外,还会阻止event flowh.

瑾兮 2016-11-26 23:37:58

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>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文