onclick =“javascript:func()”vs. onclick =“func()”

时间:2012-04-20 08:14:27

标签: javascript

之间有什么区别吗?
<input type="submit" value="Register" onclick="javascript:submitTheForm();">

<input type="submit" value="Register" onclick="submitTheForm();">

我应该在JS函数调用之前使用javascript:吗?

3 个答案:

答案 0 :(得分:10)

javascript:处理程序中的

onwhatever=""是无操作。此属性的内容始终为JavaScript,因此javascript:定义label - 但在switch块或循环之外(您可以将其用于break / {{ 1}}到标签的位置)它什么都不做。

但是,不鼓励使用内联事件处理程序,有better ways来注册事件处理程序。


虽然问题中未提及,但值得注意的是,在continue属性中使用javascript:确实有效(并且在那里确实有必要),但由于各种原因而非常劝阻:

  • href未指向元素
  • 调用返回值的函数会导致浏览器离开网站
  • 点击已禁用JavaScript的链接
  • 尝试在新窗口/标签页中打开链接

因此,如果您真的必须使用内联事件,请始终使用this等,而不要使用onclick=""

答案 1 :(得分:1)

当您处于onclick属性时,不应使用javascript:前缀。当您希望链接<a />处理JS函数时,这很有用,例如:

<a href="javascript:myfunc();"></a>

答案 2 :(得分:1)

javascript:func()正在使用javascript protocol,因此可以在锚点href属性中使用它。但是,请勿执行此操作,请参阅Why is it bad practice to use links with the javascript: “protocol”?以获取更多信息。

事件处理程序最好是触发事件而不是属性。