13

次の違いは何ですか?

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

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

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

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

4

2 に答える 2

25

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

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

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

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

(この方法は非常に時代遅れであるため、「インラインイベント属性を使用している場合」と言います。スクリプトブロックでJSを使用してイベントハンドラーを割り当てることをお勧めします。)

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

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

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

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

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

于 2012-08-06T07:25:03.677 に答える
7

最初のものは完全に冗長なラベルを持っています。

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

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

javascript:URIは、属性値の前にラベルを付けるというカーゴカルトの慣習が由来する場所です。)onclick

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

はい。

于 2012-08-06T06:16:51.667 に答える