preventDefault()仅在事件cancelable为true时有效,需在事件处理函数内调用;可取消事件如click、submit等,不可取消事件如load、error调用无效;与stopPropagation()功能正交,应按需组合使用。
preventDefault()
是 JavaScript 中用于取消事件默认行为的方法,必须在事件处理函数中调用,且仅对可取消的事件(
)生效。
什么时候可以调用 preventDefault()
只有当事件对象的
属性为
时,调用
才有效。例如:
、
、
、
等多数用户交互事件默认可取消
、
、
(部分场景)等事件不可取消,调用无效
可通过
判断:
常见误用与注意事项
直接调用或时机不当会导致预期外行为:
不能在事件处理函数外部调用,必须传入事件对象(如
)
在事件冒泡阶段调用仍有效,但若父元素已阻止默认行为,子元素无需重复调用
表单提交中,仅阻止
事件即可,不必再阻止
按钮事件(除非有额外需求)
右键菜单(
)需显式调用,否则浏览器仍会弹出默认菜单
与 stopPropagation() 的区别
只影响事件的默认动作,不影响事件传播;
则阻止事件继续冒泡或捕获,两者互不干扰:
使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
下载
立即学习
“
Java免费学习笔记(深入)
”;
阻止链接跳转但允许事件冒泡到父容器 → 只用
阻止表单提交且避免触发父级监听器 → 同时用
和
推荐按需组合,避免无意义地同时调用
现代写法建议
使用箭头函数时注意
绑定问题,推荐显式传参;同时可结合可选链和类型检查提升健壮性:
✅ 推荐:
❌ 避免:
(
未定义)
✅ 安全判断:
cancelable === truecancelabletruepreventDefault()clicksubmitkeydowncontextmenuloaderrorscrollevent.cancelableif (event.cancelable) event.preventDefault();function(e) { e.preventDefault(); }submitclickcontextmenupreventDefault()stopPropagation()preventDefault()preventDefault()stopPropagation()thisform.addEventListener('submit', e => { e.preventDefault(); doSubmit(); });button.onclick = () => e.preventDefault();eif (e && typeof e.preventDefault === 'function' && e.cancelable) e.preventDefault();