13

以下有什么区别?

  1. onClick="javascript: function('value');"
  2. onClick="function('value');"

我什么时候javascript:在函数调用之前使用,为什么?

我可以在不使用javascript:前缀的情况下调用该函数吗?

请帮助我理解其中的区别。

4

2 回答 2

25

在元素的内联事件处理程序中,如onclick, onchange,onsubmit等,您不需要前缀 - 您经常看到它的原因是因为人们将它与我在下面解释javascript:的语法混淆了。href它不会导致错误 - 我相信它被解释为标签- 但它是不必要的。

无论您是要调用函数还是运行“简单” JS 语句都没有关系,无论哪种方式都不要包含javascript:- 也就是说,所有这三个都是有效的:

onclick="doSomething('some val');"
onclick="return false;"
onclick="doSomething(); doSomethingElse(); return false;"

如果您使用内联事件属性,请不要使用javascript:前缀。

(我说“如果您使用的是内联事件属性”,因为这种做法确实已经过时:最好在脚本块中使用 JS 分配事件处理程序。)

javascript:当您想从<a>元素的href属性运行 JavaScript 时,您只需要前缀,如下所示:

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

那是因为浏览器通常期望href包含一个 URI,所以javascript:前缀告诉它期望 JS 代码。但是,我不建议这样做,因为该页面不适用于禁用 JS 的人。最好包含一个href将用户引导到一个告诉他们启用 JS 的页面,并包含一个onclick来执行 JS 功能:

<a href="/enableJS.html" onclick="doSomething(); return false;">Whatever</a>

这样,无论用户是否启用了 JS,链接都会对用户有用。return false单击处理程序末尾的 防止单击的默认行为(即导航到指定的 URL)。

于 2012-08-06T07:25:03.677 回答
7

第一个具有完全冗余的标签

我什么时候必须在函数调用之前使用“javascript:”,使用它的原因是什么?

绝不。(嗯,差不多。你确实在javascript:方案 URI 中使用它,但你应该只在编写书签时使用它们,它们不会出现在onclick属性中)。

javascript:URI 是用标签为属性值添加前缀的货物崇拜实践的来源。)onclick

我可以在不使用“javascript:”的情况下调用该函数吗?

是的。

于 2012-08-06T06:16:51.667 回答