<a href="javascript:void(0)" id="loginlink">login</a>
このようなhref
は何度も見たことがありますが、正確には何を意味しているのかわかりません。
void
演算子は,与えられた式を評価した後,
undefined` を返します. 式を評価して,「未定義」を返します.void
演算子は、しばしば単に プリミティブな値を得るために使われることが多いです。 値を得るためだけに使われることが多く、通常は "
void(0)" (これは "void 0
" と同義) を使います。 これは「void 0
」と同等です)。)このような場合 このような場合、グローバル変数undefined
を代わりに使うことができます。 の代わりに使うことができます。 既定外の値が割り当てられていないと仮定して の値が割り当てられていないと仮定して)。)
その説明はこちらにあります。void
operatorを参照してください。
リンクの href
でこれを行いたい理由は、通常、javascript:
URL は、その JavaScript を評価した結果のプレーンテキストバージョンにブラウザをリダイレクトします。しかし、その結果が undefined
であれば、ブラウザは同じページに留まります。void(0)は、
undefined`と評価される短くてシンプルなスクリプトです。
つまり、何もしないということです。これは、リンクがどこにも「移動」しないようにするための試みです。しかし、それは正しい方法ではありません。
実際には、onclick
イベントで、次のようにfalse
を返すべきです。
<a href="#" onclick="return false;">hello</a>
一般的には、リンクが何らかの「JavaScript的」なことをしている場合に使用されます。例えば、AJAXフォームを投稿したり、画像を交換したりするような場合です。この場合、呼び出されている関数が何であれ、false
を返すようにします。
しかし、あなたのウェブサイトを完全に素晴らしいものにするために、一般的には、閲覧する人がJavaScriptを実行しないことを選択した場合に、同じ動作を行うリンクを含めるでしょう。
<a href="backup_page_displaying_image.aspx"
onclick="return coolImageDisplayFunction();">hello</a>
a**タグには必ずhrefをつけるべきです。未定義」を返すJavaScriptの関数を呼び出すことは問題ありません。また、'#'へのリンクも同様です。
Internet Explorer 6のアンカータグにhrefを付けないと、a:hover
スタイルが適用されません。
これはひどい話で、人類に対する小さな犯罪ですが、Internet Explorer 6全般に言えることです。
ご参考になれば幸いです。
Internet Explorer 6は、実際には人類に対する大きな犯罪です。