web-dev-qa-db-ja.com

onClick = "javascript:function( 'value') '"とonClick = "function(' value ');"の違いは何ですか?

次の違いは何ですか?

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

関数呼び出しの前にjavascript:を使用するのはいつですか、またその理由は何ですか?

javascript:プレフィックスを使用せずに関数を呼び出すことはできますか?

違いを理解するのを手伝ってください。

13
Jalpesh Patel

onclickonchangeonsubmitなどの要素のインラインイベントハンドラーでは、javascript:は必要ありません必要ありませんプレフィックス-よく目にする理由は、以下で説明するhref構文と混同されるためです。エラーは発生しません label -と解釈されると思いますが、不要です。

関数を呼び出すか、「単純な」JSステートメントを実行するかは関係ありません。どちらの方法でも、javascript:を含めないでください。つまり、これら3つすべてが有効です。

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

インラインイベント属性を使用している場合は、javascript:プレフィックスを使用しないでください。

(「ifインラインイベント属性を使用している」と言うのは、この方法が本当に時代遅れだからです。スクリプトブロックでJSを使用してイベントハンドラーを割り当てる方がよいでしょう。)

次のようにjavascript:要素のhref属性からJavaScriptを実行する場合にのみ、<a>プレフィックスが必要です。

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

これは、ブラウザは通常hrefにURIが含まれていることを期待しているため、javascript:プレフィックスは代わりにJSコードを期待するように指示します。ただし、JSが無効になっているユーザーにはページが機能しないため、これを行うことはお勧めしません。 JSを有効にするようにユーザーに指示するページにユーザーを誘導するhrefを含め、JS機能を実行するためにonclickを含めることをお勧めします。

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

そうすれば、リンクは、JSが有効になっているかどうかに関係なく、ユーザーにとって有用なことを行います。クリックハンドラの最後にあるreturn falseは、クリックのデフォルトの動作(指定されたURLに移動すること)を防ぎます。

25
nnnnnn

最初のものは完全に冗長です label

関数呼び出しの前に「javascript:」を使用する必要があるのはいつですか。また、使用する理由は何ですか。

決して。 (まあ、ほとんど。javascript:スキームURIで使用しますが、ブックマークレットを作成している場合にのみ使用する必要があり、onclick属性には表示されません)。

javascript: URIは、 cargo-cultonclick属性値の前にラベルを付ける方法が由来する場所です。)

「javascript:」を使わずに関数を呼び出すことはできますか?

はい。

7
Quentin