ミギムキ

[JavaScript] 確認ダイアログでOKが押されたときにリンク先を開きたい

外部サイトへのリンクがクリックされたときなど、ダイアログでユーザーに確認を取ってから動作を行いたい場合があります。

そんなときは、JavaScriptの「confirm」関数を使うと手軽に確認ダイアログを表示させることができます。

サンプルコード

html

<a href="" target="_blank" class="link_confirm">外部サイトへのリンク</a>

aタグに「link_confirm」というクラスを設定しています。

後述するJavaScriptの処理で「link_confirm」クラスが設定されているaタグに対して確認ダイアログが表示されるようにします。

JavaScript

document.addEventListener('DOMContentLoaded', function() { const linkConfirms = Array.prototype.slice.call(document.querySelectorAll('.link_confirm')); linkConfirms.forEach(function(linkConfirm) { linkConfirm.addEventListener('click', function(event) { const resultConfirm = confirm('外部のサイトに移動します。よろしいですか?'); if(!resultConfirm) { event.preventDefault(); } }); }); }, false);

「link_confirm」クラスが設定されている要素を取得し、forEachでループさせます。

ループの中で「addEventListener」関数でクリック時のイベント処理を登録します。

処理の中でcomfirm関数を使って確認ダイアログを表示するようにしています。

確認ダイアログで選択された結果は、confirm関数の戻り値として受け取ることができます。

戻り値がfalseだった(=「キャンセル」が選ばれた)ときに「event.preventDefault」を実行することで、以降の処理(リンク先へのジャンプ)をスキップさせています。

サンプルコード(jQeury)

jQuery(function($) { const linkConfirms = $('.link_confirm'); if(linkConfirms.length) { linkConfirms.click(function(event) { const resultConfirm = confirm('外部のサイトに移動します。よろしいですか?'); if(!resultConfirm) { event.preventDefault(); } }) } });

jQuery版のサンプルコードです。ループ処理が不要になるので幾分シンプルなコードにすることができます。

ご質問など受け付けています

記事の中でわかりにくかったところ、もっと知りたかったこと、間違っていることなど、何でもお気軽にご連絡ください。

ご連絡は下記フォームを利用いただくか、ツイッターアカウント@flat8migi宛てでもOKです。