e.preventDefault && e.preventDefault()



当我一直在阅读关于本地拖放事件的教程时,我遇到了一个在调用e.preventDefault()之前检查e.preventDefault的条件。这个条件可以写成:

e.preventDefault && e.preventDefault();

if (e.preventDefault) { 
  e.preventDefault();
}

教程是Remy Sharp的原生拖放, Remy Sharp的拖放并自动发送到服务器,以及Matt West的实现原生拖放

我以前从未遇到过这种模式。我已经习惯了不带条件调用e.preventDefault()。什么时候e.preventDefault是假的,在e.preventDefault被调用的每个实例中使用这个短语是最佳实践吗?

看起来preventDefault行为并不是跨浏览器标准化的。它解释了为什么jQuery在它的Event对象包装器中有一个本机preventDefault()的包装器,使其始终呈现并且更可预测。在这种情况下,您不必为preventDefault和它的值做额外的测试,但可以假设它在事件所在的位置可用。但是,如果没有jQuery这样的抽象库,您仍然需要进行额外的测试。jQuery的代码似乎是一个很好的指南。

如果Javascript找不到这个函数(浏览器没有这个函数),它将为false,但无论如何它应该是"undefined",它将被转换为false。如果您希望与旧浏览器保持兼容性,则应该在每次调用此函数时使用它。

 e.preventDefault && e.preventDefault ()

如果第一个条件为真,则执行该条件。无论如何,在jQuery中你可以找到一种通用的方法来做到这一点。

示例,如果我没记错的话,一些浏览器(IE?)可以使用e.returnValue来避免执行默认的操作代码。

你添加的两个代码是同一件事,做同样的事情。

e.preventDefault何时为false ?

在不尊重DOM规范的非常老的浏览器中,例如IE<=8,它将是未定义的。

在调用e.p preventdefault的每个实例中使用这个短语是最佳实践吗?

。通过标准DOM方法附加的侦听器也可以期望该方法存在。如果你关心旧的浏览器,你通常需要一个框架来显示这些

相关内容

  • 没有找到相关文章

最新更新