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

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

泛泛之交 发布于 2016-11-06 字数 80 浏览 969 回复 3

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

发布评论

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

评论(3

泛泛之交 2017-01-20 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(),事件的默认行为不会被执行,事件也不会冒泡向上传递。

夜无邪 2016-12-21 2 楼

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

瑾兮 2016-11-26 1 楼

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>