【问题标题】:What is the difference between onClick="javascript: function('value')'" and onClick="function('value');"? [duplicate]onClick="javascript: function('value')'" 和 onClick="function('value');" 有什么区别? [复制]
【发布时间】:2012-08-06 06:14:07
【问题描述】:

以下有什么区别?

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

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

可以不使用javascript:前缀调用函数吗?

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

【问题讨论】:

  • javascript: 前缀仅在 href 中是必需的,通常不会包含 JS 代码。
  • 为什么href 中需要javascript?对此有任何帮助,请向我解释,这对我理解差异非常有帮助@Spudley
  • 请注意,此问题的答案适用于内联事件处理程序中的 any JavaScript,而不仅仅是函数调用。例如,您可以说 onclick="return false;" 而不是 onclick="javascript:return false;"
  • 这意味着当我必须使用倾斜代码时,我必须使用javascript:。我对吗?? @nnnnnn

标签: javascript function function-calls


【解决方案1】:

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

不管你是想调用一个函数还是运行一个“简单”的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 的人。最好包含一个 href 将用户引导到一个告诉他们启用 JS 的页面,并包含一个 onclick 来执行 JS 功能:

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

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

【讨论】:

    【解决方案2】:

    第一个有一个完全多余的label

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

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

    javascript: URI 是 cargo-cultonclick 属性值前加上标签的做法的来源。)

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

    是的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-18
      • 2019-02-18
      • 2016-10-14
      相关资源
      最近更新 更多