9

有没有区别

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

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

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

4

3 回答 3

10

javascript:处理程序内部onwhatever=""是无操作的。此属性的内容始终是 JavaScript,因此javascript:定义了一个标签- 但在switch块或循环之外(您可以将它用于break/continue到标签的位置)它什么也不做。

但是,不鼓励使用内联事件处理程序,有更好的 方法来注册事件处理程序。


虽然问题中没有提到,但值得注意的是,javascript:href属性中使用确实有效(并且在其中实际上是必要的),但由于各种原因非常不鼓励:

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

因此,如果您真的必须使用内联事件,请始终使用onclick=""etc. 而不使用javascript:.

于 2012-04-20T08:16:35.140 回答
1

当你在一个onclick属性中时,你不应该使用javascript:前缀。当您想要一个链接<a />来处理 JS 函数时,这很有用,例如:

<a href="javascript:myfunc();"></a>
于 2012-04-20T08:16:54.363 回答
1

javascript:func()正在使用javascript 协议,以便它可以在锚href属性中使用。但是,不要这样做,请参阅Why is it bad practice to use links with the javascript: “protocol”?了解更多信息。

事件处理程序更适合触发事件而不是属性。

于 2012-04-20T08:19:47.420 回答