web-dev-qa-db-ja.com

hrefとして `javascript:`の代わりに `javascript:void(0)`を使用するのはなぜですか?

href="javascript:void(0)"と_href="javascript:;"_を見たことがあります。代わりに_href="javascript:"_を使用しない理由はありますか?

編集:はっきりさせておきますが、これをonclickと組み合わせており、代替手段を使用する必要が生じた場合は_return false_を使用することに異論はありません。もちろん、これは、代替案が_javascript:_よりも理にかなっている場合にのみ発生します。

また、最初の段落に示されている(明らかに私が思う)私の質問に対する答えはまだ見ていません。 ありがとう、デビッド。 :)

href="javascript:void(0)"と_href="javascript:;"_を見たことがあります。代わりに_href="javascript:"_を使用しない理由はありますか?

16
Bryan Field

質問には答えませんが、もう少し光を当てる可能性があります。netscapeなどの初期バージョンのブラウザの中には、スクリプトがhref内で使用されたときに問題が発生したものがあります。

void演算子は、クリックに何もしないように強制するだけでした。

これで、ブラウザが「疑似URL」を適切に実装しているので、javascript:;を安全に使用できます。

10
david

個人的にはどちらも使用しないようにします。代わりにonclick='return false;'を使用し、href='#'を設定します。

どうして?なぜなら、hrefにJavascriptコードを入れると、他のURLと同じように、リンクにカーソルを合わせるとブラウザのステータスバーに表示されるからです。散らかっているように見えます。

実際、とにかく無視されるので、ハッシュだけでなく、好きなURLをhrefに入れることができます。ユーザーがJavascriptを無効にしている場合に備えて、ハッシュは最も安全ですが、それ以外は何でもかまいません。

しかし、指摘しなければならないのは、hrefが無効なJavascriptコードになっている<a>タグがあると、そもそも<a>タグがあるという点がかなり無効になっているようです。実行時にリンクを有効または無効にする方法はわかりますが、hrefをvoidに設定するだけでは意味がないように見えます。実際のリンクにならない場合は、<span>またはその他のタグを付けてください。リンクのように見せなければならない場合は、CSSでそれを行うのは簡単です。

18
Spudley

どちらも使用しない方が良いです。 href属性はURLを示します。イベントハンドラーを使用して目的の動作を取得することをお勧めします。これはおそらくonclickイベントです。

この場合、望ましい動作は明らかに何もしないことです。まず、どこにもリンクされていないのに、なぜアンカータグを使用するのですか?次に、これは、onclickイベントハンドラーがfalseを返すようにすることで、イベントのバブリングを防ぐことで処理できます。次に、href#を指すか、イベントハンドラーとほぼ同じ効果を持つURLを指すようにすることもできます。そのため、JavaScriptが有効になると正常に機能が低下します。オフ。

2
Rian Schmits

理想的な状況は、要素自体にコードを配置せず、スクリプトタグまたは外部ファイルのいずれかでjavascriptを使用し、そこでイベントハンドラーをバインドすることです。

2