"onClick='javascript: function('value')'"和"onClick='function('value');'的区别是什么?"

13
以下两者有何不同?
1. onClick="javascript: function('value');" 2. onClick="function('value');" 在什么情况下需要在函数调用前使用javascript:,为什么要这样做?
我能否在没有使用javascript:前缀的情况下调用该函数?
请帮助我理解它们之间的区别。

2
避免使用onclick属性。参考:http://en.wikipedia.org/wiki/Unobtrusive_JavaScript。 - Quentin
javascript:前缀仅在href中必要,而该位置通常不包含JS代码。 - Spudley
1
请注意,以下答案适用于任何内联事件处理程序中的JavaScript,而不仅仅是函数调用。例如,您可以使用onclick="return false;"而不是onclick="javascript:return false;" - nnnnnn
这意味着当我需要使用倾斜代码时,我必须使用 javascript:。我是对的吗?@nnnnnn - Jalpesh Patel
请将以下与编程有关的内容从英语翻译成中文。仅返回翻译后的文本: 请在回答中向我解释,以便我能正确理解它。 - Jalpesh Patel
显示剩余2条评论
2个回答

25
在元素的内联事件处理程序中,比如onclickonchangeonsubmit等,您不需要使用javascript:前缀。之所以经常看到这种写法,是因为人们将其与我下面解释的href语法混淆了。它不会导致错误 - 我认为它被解释为标签 - 但这是不必要的。
无论您想调用一个函数还是运行一个“简单”的JS语句,都不需要包含javascript:。也就是说,以下三种写法都是有效的:
onclick="doSomething('some val');"
onclick="return false;"
onclick="doSomething(); doSomethingElse(); return false;"

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

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

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

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

这是因为浏览器通常希望href包含一个URI,所以javascript:前缀告诉它期望JS代码。然而,我不建议这样做,因为页面对于禁用JS的用户将无法工作。最好包含一个指导用户启用JS的页面链接,以及一个onclick来执行JS功能:

<a href="/enableJS.html" onclick="doSomething(); return false;">Whatever</a>
那样做可以使链接在用户启用JS或未启用JS的情况下都有用。点击处理程序末尾的return false可以防止单击的默认行为(即导航到指定的URL)。

7

第一个有完全冗余的标签

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

从不。(好吧,几乎从不。您可以在javascript:方案URI中使用它们,但只有在编写书签时才应使用它们,并且它们不会出现在onclick属性中。)

javascript: URI是cargo-cult前缀onclick属性值的惯例来自何处。)

我可以不使用“javascript:”调用函数吗?

可以。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接