在元素的内联事件处理程序中,比如
onclick
、
onchange
和
onsubmit
等,您不需要使用
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)。
javascript:
前缀仅在href
中必要,而该位置通常不包含JS代码。 - Spudleyonclick="return false;"
而不是onclick="javascript:return false;"
。 - nnnnnnjavascript:
。我是对的吗?@nnnnnn - Jalpesh Patel