4

との比較について読みました。href="#"また、href="javascript:void(0)"比較についても知りたいです

href="javascript:;" or href="javascript:void(0)"

ps:href="javascript:;"の代わりにいつも使用しhref="javascript:void(0)"ていますが、問題はありません。

4

4 に答える 4

3

javascript:どちらの形式でもハイパーリンクで使用するのは良くありません。JavaScript の設計は目立たないようにする必要があります。

イベント リスナーをアンカーにアタッチする場合は、#アンカーまたは実際の URL を使用する必要があります。例:

<a href="/delete/post/123">delete</a>
...
<script>
jQuery(function($) {
     $('a').on('click', function(event) {
         event.preventDefault();
         // do ajax stuff
     });
});
</script>

このように、古いブラウザー (または JavaScript が無効になっているブラウザー) は通常のリンクに従ってアイテムを削除しますが、JavaScript が有効なブラウザーは AJAX を介してこれを行うため、ページを更新する必要はありません。

リンクが本当に何もしないことを意図している場合は、アンカーをまったく使用しないでください。<span>その目的のためにa をスタイリングするだけです。

于 2013-09-16T01:51:09.090 に答える
0

javascript:void(0) - javascript:some_code_to_execute よりも理解しやすい。確かに、あなたの場合は javascript:; 読むのは難しくありません。コードが壊れているとは思わないでしょう。

javascript: で lcick を処理するのが悪い理由はいくつかあります。私はそれが実際の質問ではないことを知っていますが、関連しています:

  1. このアプローチは時代遅れであり、ブラウザー ベンダーによってまだサポートされているため、wc3 標準には含まれていません。
  2. リンク href="javascript" は、javascript を使用しないユーザーには機能しません。href="/somePage.com?id=123" onclick="makeActionFor(777); return false"> を使用することをお勧めします
  3. マークアップとコードの間に分離はありません。この場合、前の例で onclick を配置することも、クリック ハンドラーをアタッチする方法として不適切です。
于 2013-09-16T01:54:45.463 に答える
0

リンクの通常の動作は、式が に評価されない限りjavascript:、ドキュメントの本文が式の評価結果に置き換えられることです。2 つのバージョンに違いはありません。どちらも評価され、リンク内では効果がありません。undefinedundefinedjavascript:

ただし、これは no-op リンクを作成するための推奨される方法ではありません。ブラウザに JavaScript の解析と評価を不必要に強制します。何もしないリンクを作成したい場合は、そのリンクを に設定しhref、関数をリンクのイベント"#"にバインドする必要があります。clickイベント ハンドラにはイベント オブジェクトが渡されます。いくつかのコードを評価し、リンクがたどられないようにする (#現在の URL に追加する) 場合はevent.preventDefault()、 、event.stopPropagation()、または単にfalseイベント ハンドラーから戻ることができます。

最善の選択肢は、属性に何らかの意味のある値を維持することhrefです。これにより、JavaScript が回避された場合 (IE、ユーザーがリンクを新しいウィンドウで開く場合) にも、適切なフォールバックが行われます。次に、既存の HTML のみの機能のに追加の「豊富な」アクションを重ねる必要があります。

于 2013-09-16T01:49:12.757 に答える
0

に何を入れるかは、実際にhrefは関係ありません。falseクリック ハンドラーから戻ることで、リンクが最初にたどられないようにする必要があります。

例:

<a href="fallback.html" onclick="doSomething();return false;">

には、hrefJavascript を無効にしているユーザー向けのフォールバック ソリューションへのリンク、またはページの機能を使用するには Javascript が必要であることを知らせるページを配置できます。

于 2013-09-16T01:49:53.513 に答える