トラブルシュート

モーダルが閉じないときに共有前に確認するチェックリスト

モーダルが閉じないトラブルを共有前に防ぐには、HTMLを相手に送る前に動作を自分で確認するチェックリストが有効です。AI生成コードでは開く側の実装は正しくても閉じる側が抜けているパターンが多く、4〜5項目のチェックで大半のトラブルを未然に防げます。

よくある原因

チェックリストで防げるトラブルの典型は「モーダルを閉じるボタンのID名とJSの参照IDが違う」問題です。AIがHTMLを生成する際に`close-modal`と命名し、JSでは`closeModal`(キャメルケース)で参照していたり、スペルミスが1文字混入していることがあります。

モーダルが閉じた後に`body`の`overflow: hidden`が残って背景がスクロールできなくなるのも、チェックリストがあれば防げる典型的な問題です。「閉じた後に背景をスクロールできるか」を確認ステップに入れておくと、この症状を共有前に発見できます。

  • 相手がログインなしで開ける状態か確認する
  • PCとスマホで最低1回ずつ表示を確認する
  • 内部情報・個人情報・不要な外部送信が残っていないか見る
  • レビュー期限と修正時の差し替え方を決めておく

自分側で確認すること

チェック①:モーダルを開く→×ボタンをクリックして閉じる、の操作を実施。チェック②:モーダルを開く→オーバーレイ(背景の暗い部分)をクリックして閉じる、の操作を実施。チェック③:モーダルを閉じた後にページ全体をスクロールできるか確認。チェック④:モーダルを開く→閉じる→再度開く、の繰り返し操作が正常か確認。

DevToolsのConsoleタブを開いた状態でチェック①〜④を実施し、赤いエラーが一件も出ないことを確認します。エラーが出た場合はメッセージをメモして原因を特定します。`Cannot read properties of null`はID名の不一致、`is not a function`は関数定義の場所の問題です。

  • HTML内の外部script・form action・iframeを確認する
  • APIキーやトークンらしき文字列がないか検索する
  • 画像・CSS・JSのパスが公開後も解決できるか見る
  • noindexと認証を混同せず、必要なら両方設定する

相手側で確認すること

相手から「モーダルが閉じない」と報告があったら、「×ボタンとオーバーレイクリックのどちらを試しましたか?両方ダメですか?」と聞きます。両方ダメなら閉じるロジック全体の問題、片方だけなら特定のイベントリスナーの問題です。

スマホユーザーの場合、「モーダルの外をタップしても閉じない」という報告は、オーバーレイのタッチイベントが設定されていないことが多いです。`onclick`はiOS Safariでは一部要素で動かないため、`addEventListener('touchend', closeModal)`を追加するか、`cursor: pointer`をオーバーレイ要素に設定します。

  • HTML内の外部script・form action・iframeを確認する
  • APIキーやトークンらしき文字列がないか検索する
  • 画像・CSS・JSのパスが公開後も解決できるか見る
  • noindexと認証を混同せず、必要なら両方設定する

再発防止の運用

モーダルを含むHTMLの共有前チェックを「①×ボタンで閉じる、②背景クリックで閉じる、③再オープン可能、④スクロール復帰、⑤Consoleエラーなし」の5項目に標準化します。Notionのチェックボックステンプレートに組み込んでおくと毎回の確認が習慣化します。

AIにモーダルを生成させる際は「テスト手順:①×ボタンで閉じる ②背景クリックで閉じる ③2回目の開閉が正常 をすべて満たす実装にしてください」とプロンプトに含めると、生成時点からテストケースを考慮したコードになりやすいです。

  • HTML内の外部script・form action・iframeを確認する
  • APIキーやトークンらしき文字列がないか検索する
  • 画像・CSS・JSのパスが公開後も解決できるか見る
  • noindexと認証を混同せず、必要なら両方設定する

よくある質問

チェックリストの①〜④はすべてやらないといけませんか?最低限どれが重要ですか?

最低限は①×ボタンで閉じる確認と⑤Consoleエラーなしの2項目です。時間があれば②背景クリックと③再オープン確認を追加すると実用上の不具合をほぼカバーできます。

モーダルを閉じるとページが一瞬白くなります

モーダルを閉じるJSが`location.reload()`をセットで呼んでいる可能性があります。閉じる関数のコードを確認し、不要な`reload`を削除してください。AIがリセット処理として自動的に挿入することがあります。

複数のモーダルがある場合、チェック項目は倍になりますか?

基本的には各モーダルに対してチェック①③を実施する必要があります。ただし閉じるロジックを共通関数にまとめてある場合は、代表の1つを確認すれば十分なことが多いです。

関連記事

トラブルシュート

モーダルが閉じないときの原因と直し方

共有HTMLのモーダルが閉じないトラブルの原因と修正方法を解説。AI生成コードで起きやすいJSイベント未設定・display切り替えの誤り・z-index競合を症状別に整理します。

5分で読める
トラブルシュート

モーダルが閉じない問題をAI生成HTMLで防ぐプロンプト

AI生成HTMLでモーダルが閉じない問題を防ぐプロンプトの書き方を解説。×ボタン・背景クリック・ESCキーの3つの閉じ方を網羅した指示文テンプレートと、生成後の検証手順を紹介します。

4分で読める
「トラブルシュート」の記事をもっと見る →