我想知道是否event.preventDefault()和return false相同。
event.preventDefault()
return false
elem.onclick = function(){ return false;
};
然后,return false阻止默认操作,例如event.preventDefault()。
addEventListener
elem.addEventListener( 'click', function(e){ return false; }, false
);
然后,return false不要阻止默认操作。
所有浏览器的行为都一样吗?
event.preventDefault()和之间还有更多区别return false吗?
在哪里可以找到一些有关return false行为的文档(我在MDN中找不到)event.preventDefault()?
的W3C文档对象模型事件规范在 _1.3.1。 事件注册接口_指出,handleEventEventListener中没有返回值:
handleEvent
handleEvent 每当发生事件类型为注册了EventListener接口的事件时,都会调用此方法。[…] 没有返回值
根据 _1.2.4。 事件取消_文档还指出
取消是通过调用Event的preventDefault方法来完成的。如果一个或多个EventListener在事件流的任何阶段调用preventDefault,则默认操作将被取消。
这应该阻止您使用在任何浏览器中使用返回true / false可能产生的任何影响event.preventDefault()。
更新资料
HTML5规范实际上指定了如何对待不同的返回值。HTML规范的7.1.5.1节规定:
如果返回值是WebIDL布尔值false,则取消该事件。
除了“ mouseover”事件以外的所有事件。
结论
我仍然建议event.preventDefault()在大多数项目中使用,因为您将与旧规范兼容,从而与旧版浏览器兼容。仅当您只需要支持最新的浏览器时,返回false即可取消。