JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptの確認ダイアログ(confirm box)に画像を表示する方法

JavaScriptの標準的なalert()confirm()メソッドでは、残念ながら画像を表示することができません。これらのネイティブダイアログはテキストのみしか扱えないためです。画像付きの確認ボックスを実現したい場合は、HTML・CSS・jQueryを組み合わせて独自のカスタムダイアログを作成する必要があります。

以下のコードは、確認ボックスに画像を表示する具体的な実装例です。この例では、「サッカーは好きですか?」という質問に合わせて、サッカーボールの画像を表示しています。

コード例

<!DOCTYPE html>
<html>
   <head>
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js">
      </script>
      <script>
         function functionConfirm(msg, myYes, myNo) {
            var confirmBox = $("#confirm");
            confirmBox.find(".message").text(msg);
            confirmBox.find(".yes,.no").unbind().click(function() {
               confirmBox.hide();
            });
           confirmBox.find(".yes").click(myYes);
           confirmBox.find(".no").click(myNo);
           confirmBox.show();
         }
      </script>
      <style>
         #confirm {
            display: none;
            background-color: #91FF00;
            border: 1px solid #aaa;
            position: fixed;
            width: 250px;
            left: 50%;
            margin-left: -100px;
            padding: 6px 8px 8px;
            box-sizing: border-box;
            text-align: center;
         }
         #confirm button {
            background-color: #48E5DA;
            display: inline-block;
            border-radius: 5px;
            border: 1px solid #aaa;
            padding: 5px;
            text-align: center;
            width: 100px;
            cursor: pointer;
         }
         #confirm .message {
            text-align: left;
         }
      </style>
   </head>
   <body>
      <div id="confirm">
         <div class="message"></div>
         <img src="https://upload.wikimedia.org/wikipedia/en/thumb/e/ec/Soccer_ball.svg/120px-Soccer_ball.svg.png" width="150" height="110"/>
         <button class="yes">Like!</button>
         <button class="no">No, I Like Cricket!</button>
      </div>
      <button onclick='functionConfirm("Do you like Football?", function yes() {
         alert("Yes")
      }, function no() {
         alert("no")
      });'>submit</button>
   </body>
</html>

コードの解説

  • functionConfirm()関数:表示するメッセージと、「はい」「いいえ」ボタンそれぞれに対応するコールバック関数を引数として受け取ります。
  • メッセージの設定.messageクラスの要素に質問文を設定し、confirmBox.show()でダイアログを画面に表示します。
  • ボタンの動作:「Like!」ボタンをクリックするとyes()関数が、「No, I Like Cricket!」ボタンをクリックするとno()関数が実行され、それぞれアラートが表示されます。
  • ダイアログを閉じる:どちらのボタンをクリックしてもconfirmBox.hide()が呼ばれ、ダイアログが非表示になります。

カスタマイズのポイント

カスタムダイアログを使う最大のメリットは、画像の表示だけでなく、デザインを自由に変更できる点です。CSSの#confirmスタイルを編集すれば、背景色・幅・位置・角丸などをお好みに調整できます。また、<img>タグのsrc属性を差し替えることで、質問内容に応じた任意の画像を表示できます。

  1. JavaScriptでアラートボックスを作成する方法

    アラートボックスとは? アラートボックス(Alert Box)とは、クリック、スクロール、テキスト入力などのユーザー操作に反応してポップアップ表示される小さなウィンドウのことです。主にユーザーへ問題や注意点を警告する目的で使われますが、単に情報をお知らせする用途でも広く活用されています。 よくある使用例として、フォームの送信ボタンをクリックしたものの、必須項目の入力を忘れてしまったケースが挙げられます。この場合、アラートボックスが自動的に表示され、問題の内容をユーザーに分かりやすく伝えることができます。 アラートボックスの作成方法 それでは、上のスクリーンショットと同じアラートボックスを実際

  2. JavaScriptのアラートボックス(alert)のタイトルは変更できる?カスタムモーダルで実現する方法

    結論から言うと、セキュリティ上の制約により、JavaScriptの標準的なalert()メソッドで表示されるアラートボックスのタイトルを編集することはできません。なぜタイトルが変更できないのかブラウザ標準のアラートボックスは、悪意あるサイトがOSやブラウザ自体のダイアログに偽装してユーザーを騙すことを防ぐため、ブラウザ側で厳しく管理されています。そのため、タイトル部分には自動的にドメイン名や「このページから」といった情報が表示され、開発者が自由に書き換えることはできない仕組みになっています。解決策:カスタムモーダルダイアログを使うすべてのWebブラウザで一貫した見た目のアラートボックスを実現し