以下是什么区别?
onClick="javascript: function('value');"
onClick="function('value');"
我何时在函数调用之前使用javascript:
,为什么?
我可以在不使用javascript:
前缀的情况下调用该函数吗?
请帮助我理解其中的差异。
答案 0 :(得分:25)
在元素的内联事件处理程序中,如onclick
,onchange
,onsubmit
等,您不需要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:”??
的情况下调用该函数
是