onClick =“javascript:function('value')'”和onClick =“function('value');”有什么区别?

时间:2012-08-06 06:14:07

标签: javascript function function-calls

以下是什么区别?

  1. onClick="javascript: function('value');"
  2. onClick="function('value');"
  3. 我何时在函数调用之前使用javascript:,为什么?

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

    请帮助我理解其中的差异。

2 个答案:

答案 0 :(得分:25)

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

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

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

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

(我说“ if 你正在使用内联事件属性”,因为这种做法确实过时了:最好在脚本块中使用JS分配事件处理程序。)

如果您想要从javascript:元素的<a>属性运行JavaScript,则只需要href前缀:

<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会阻止点击的默认行为(可能会导航到指定的网址)。

答案 1 :(得分:7)

第一个完全冗余label

  

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

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

javascript: URI是cargo-cult为带有标签的onclick属性值添加前缀的做法。)

  

我可以在不使用“javascript:”??

的情况下调用该函数