在JavaScript中,阻止事件默认行为需调用事件对象的preventDefault()方法;该方法适用于可取消事件(e.cancelable === true),如链接跳转、表单提交等,且语义明确、兼容性好。

在 JavaScript 中,停止事件默认行为主要通过调用事件对象的 preventDefault() 方法实现。
什么时候需要阻止默认行为
很多 HTML 元素自带浏览器默认动作,比如:
- 点击
<a>链接会跳转页面 - 表单提交(
<form>)会刷新页面并发送请求 - 按空格键在
<video>上会播放/暂停 - 右键点击触发上下文菜单
当你要用 JavaScript 自定义这些行为时,就必须先阻止默认动作,否则两者会同时发生。
基本用法:在事件处理函数中调用 preventDefault()
确保你拿到了事件对象(通常作为回调函数的第一个参数),然后直接调用它:
立即学习“Java免费学习笔记(深入)”;
document.querySelector('a').addEventListener('click', function(e) {
e.preventDefault(); // 阻止跳转
console.log('链接被点了,但没跳走');
});
注意:这个方法只对可取消的事件有效(e.cancelable === true),多数用户交互事件都支持。
和 return false 的区别
preventDefault() 只阻止默认行为;而 return false 在原生事件监听器中不会起作用(它只是退出函数)。只有在 jQuery 里,return false 才等价于同时调用 preventDefault() 和 stopPropagation()。
所以推荐明确写:
-
e.preventDefault()—— 只阻止默认行为 -
e.stopPropagation()—— 只阻止事件冒泡 - 两个都用就都写上,语义清晰、兼容性好
常见场景示例
阻止表单提交并用 fetch 提交:
document.querySelector('form').addEventListener('submit', function(e) {
e.preventDefault();
fetch('/api/login', {
method: 'POST',
body: new FormData(this)
});
});
禁用右键菜单:
document.addEventListener('contextmenu', function(e) {
e.preventDefault();
});


















