如何以及何时使用preventDefault()?

时间:2013-07-01 09:40:22

标签: javascript

tutorial ,据说:

  

preventDefault();做一件事:它会停止浏览器的默认设置   行为。

我在网上搜索preventDefault()的示例,我只能在两种情况下看到(链接,表单)我们使用preventDefault():阻止提交按钮提交表单并阻止链接跟随网址。

所以,我的问题是:

  1. 在其他情况下我们可以使用preventDefault()

  2. 我怎样才能找到所有浏览器的默认行为?例如如果我点击一个按钮,浏览器的默认行为是什么?

4 个答案:

答案 0 :(得分:5)

1.在其他情况下我们可以使用preventDefault()?

实际上任何类型的事件,您都可以使用preventDefault();停止其默认行为 因此,不仅提交按钮,还有按键,滚动事件,您可以命名它,并且可以防止它发生。或者,如果您想将自己的逻辑添加到默认行为中,请考虑记录事件或您选择的任何内容。

2.我可以找到所有浏览器的默认行为吗?例如如果我点击一个按钮,浏览器的默认行为是什么?

这是什么意思?大多数情况下,默认行为都是隐含的。单击按钮时,会触发onclick事件。单击“提交”按钮时,将提交表单。当窗口滚动时,会触发onscroll事件。

答案 1 :(得分:3)

  

1)在其他情况下我们可以使用preventDefault()

各种表单字段会更新其状态以响应某些事件,例如单击它时的复选框。如果您preventDefaultclick,则复选框将恢复为之前检查的状态。有很多行为 - 当按下按键时,滚动窗口时,元素被聚焦时......

  

2)我怎样才能找到所有浏览器的默认行为?例如如果我点击一个按钮,浏览器的默认行为是什么?

The specification列出了每个元素的“激活行为”。例如,将a elements所述的激活行为与input[type=checkbox]所述的激活行为进行比较。 (“预点击激活步骤”也很有趣。)

答案 2 :(得分:1)

DOM中的每个项目都有一些“默认行为”。这适用于每个浏览器大致相同(排除一些例外)。如果您希望执行自己的逻辑而不是默认行为,则可以使用preventDefault()函数。 stopPropagation()函数也是如此,如果你只是希望你自己的逻辑被执行而没有其他任何东西,那么它会阻止事件冒泡事件树。

答案 3 :(得分:0)

您可以在每种类型的事件中使用它,例如:

element.onclick = function(event) {
    event = event || window.event

    if (event.preventDefault) { // W3C variant
        event.preventDefault()
    } else { // IE < 9 variant. It doesn't work in older version of IE
        event.returnValue = false
    }
}

returning false或使用event.preventDefault之间的区别是什么?

  1. 返回false。停止默认浏览器操作并完成处理。
  2. event.preventDefault。停止默认浏览器操作但未完成处理
  3. 这是一个有用的link,可以深入解释。