12 of 17 menu

JavaScriptにおけるリンク遷移禁止エラーの解説

以下のリンクがあるとします:

<a href="">link</a>

このリンクを変数に取得します:

let link = document.querySelector('a');

リンクにクリックイベントハンドラーをバインドします。 この際、ページのリロードを防ぐために、 リンクのデフォルトの遷移動作をキャンセルします:

link.addEventListener('click', function(event) { console.log(this.textContent); event.preventDefault(); });

これで予期せぬ動作から完全に守られているように思えます。 実際にはそうではありません。問題は、構文エラーが発生すると JavaScriptコードが実行されず、リンクのブロックが機能せず、 リンク遷移が実行されてしまうことにあります。

この場合、コードの実行結果もコンソールのエラーも確認できません。 なぜならページがリロードされてしまうからです。 実際にコード内に意図的にエラーを作成し、確かめてみましょう:

link.addEventListener('click', function(event) { thiss.textContent = 'text'; // 構文エラー event.preventDefault(); });

この問題には特徴的な兆候があります: リンクをクリックした瞬間にコンソールを見ると、 一瞬だけ赤いエラーが表示され、ほとんどすぐに 消えてしまいます。

もちろん、エラーメッセージを読み取る時間はなく、 これはエラーの発見を著しく困難にします。 しかし、巧妙な対処法があります。リンクの href属性にハッシュ(#)を設定するのです。 これによりリンク遷移は発生せず、コンソールに スローされたエラーを確認できるようになります:

<a href="#">link</a>
日本語
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItalianoქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否