我完全理解event.preventDefault()
会阻止由浏览器上的事件触发的任何默认行为,但这个定义对我来说过于宽泛,例如那些事件默认值浏览器上的行为?因为发现开发人员使用event.preventDefault()
是很常见的,但我仍然不明白他们试图阻止什么样的行为。
由于
答案 0 :(得分:3)
如果您点击某个链接,例如http://example.com
,则您的浏览器的默认行为是转到http://example.com
。
如果您在点击处理程序中preventDefault
,浏览器将不再更改您的窗口位置。
document.querySelector('.prevent-default').addEventListener('click', function (e) {
e.preventDefault();
}, false);

<a href="http://example.com">Normal Example</a>
<a class="prevent-default" href="http://example.com">Prevented Example</a>
&#13;
其他例子包括:
submit
已提交相关表单mousedown
已关联文字选择keydown
已关联输入touchstart
可能具有关联的滚动/缩放行为。答案 1 :(得分:1)
一个简单的例子是click
事件。我们假设你有一个像
<a href="/my-sub-page.html" class='ajax-link'>
默认行为是当您点击此链接时,它会将您带到/my-sub-page.html页面。但如果你想避免页面刷新,而是想要使用ajax。然后你将使用
$('.ajax-link').on('click', function(event){
event.preventDefault();
$.ajax({
url : $(this).attr('href'),
success : function(response){
$('.my-content').html(response);
}
})
});
或其他示例可以是提交。与上面类似,您可以防止表单提交的默认行为,并使用ajax并从post请求中获取结果而不加载页面。
答案 2 :(得分:1)
有许多默认浏览器操作:
mousedown
– 开始选择(移动鼠标选择)。click
在 <a href="">
- 打开页面。click
on <input type="checkbox">
– 选中/取消选中输入。submit
– 在表单域中单击 <input type="submit">
或按 Enter 会导致此事件发生,并且浏览器会在此事件之后提交表单。keydown
– 按下一个键可能会导致在字段中添加一个字符或其他操作。contextmenu
– 事件发生在右键单击时,动作是显示浏览器上下文菜单。
等答案 3 :(得分:0)
event.preventDefault()方法停止发生元素的默认操作。
例如:
使用 event.isDefaultPrevented()方法检查是否为该事件调用了 preventDefault()方法。