当前位置: 首页 > 面试题库 >

event.preventDefault()与返回false(无jQuery)

颛孙越
2023-03-14
问题内容

我想知道是否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 每当发生事件类型为注册了EventListener接口的事件时,都会调用此方法。[…] 没有返回值

根据 _1.2.4。 事件取消_文档还指出

取消是通过调用Event的preventDefault方法来完成的。如果一个或多个EventListener在事件流的任何阶段调用preventDefault,则默认操作将被取消。

这应该阻止您使用在任何浏览器中使用返回true / false可能产生的任何影响event.preventDefault()

更新资料

HTML5规范实际上指定了如何对待不同的返回值。HTML规范的7.1.5.1节规定:

如果返回值是WebIDL布尔值false,则取消该事件。

除了“ mouseover”事件以外的所有事件。

结论

我仍然建议event.preventDefault()在大多数项目中使用,因为您将与旧规范兼容,从而与旧版浏览器兼容。仅当您只需要支持最新的浏览器时,返回false即可取消。



 类似资料:
  • 问题内容: 当我想阻止其他事件处理程序在某个事件被触发后执行时,可以使用两种技术之一。我将在示例中使用jQuery,但这也适用于纯JS: 1。 2。 这两种停止事件传播的方法之间是否有显着差异? 对我来说,比执行方法更简单,更短并且更容易出错。使用该方法时,您必须记住正确的大小写,括号等。 另外,我必须在回调中定义第一个参数才能调用该方法。也许,出于某些原因,我应该避免这样做并改为使用它?有什么更

  • 问题内容: 在我的程序中,我有一个字符串(从外部库获取),该字符串与任何正则表达式都不匹配。 知道有什么问题吗?当我打印到标准输出时,看起来还可以。 这是从PDF提取文本的代码(我正在使用iText 5.0.1): 问题答案: 默认情况下,不匹配的换行符。所以我的猜测是您包含换行符。 还要注意,它将匹配整个字符串,而不仅仅是字符串的一部分:它不会做什么! 一些例子: 在最后一个例子将导致匹配换行符

  • 问题内容: 我正在用Django + jQuery测试ajax。我认为: 这在我的模板中: 我的问题是-为什么这会在我的HTML页面中返回“ Not ajax”? 问题答案: 我不知道你怎么了 我测试并取得了良好的消息:。我的代码: urls.py views.py templates / home.html

  • 在什么情况下netty中的writAndFlush函数返回false。我们如何调试它?我需要启用某些东西才能在通道上写入吗?我还检查了通道,它是可写的。 谢谢,Adib

  • 问题内容: 当我尝试从Java代码中删除tomcat服务器conf / Catalina / localhost中存在的文件时,file.delete()始终返回false。但是,如果我通过file.exists()函数检查文件,它将返回true。我没有任何例外。请帮助我们为什么会这样。有什么解决方案? 问题答案: 当我尝试从Java代码中删除tomcat服务器conf / Catalina /

  • 问题内容: 我正在使用kubernetes python客户端。如果我的代码启动时kubernetes不可用,我想重试连接。 当客户端无法连接时,它会抛出一个异常,因此我从以下内容开始: 但这完全失败了;它的行为就像没有任何声明,并且可以解决: 我以为也许我不像我想象的那样理解继承,所以我将上述内容替换为: 以相同的方式失败。为了弄清楚发生了什么,我添加了一个包罗万象并调用pdb: 从提示符处,我