ページを閉じる時に確認メッセージを表示するには、beforeunloadを使用します。
しかし、beforeunloadは厳密にいうと閉じるタイミングではなく、ページがアンロードするタイミングでイベントが発生します。なのでForm送信するタイミングでもイベント発生するので、実装に少し工夫が必要です。
サンプルソース
例1)beforeunloadのタイミングで確認メッセージを表示する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>サンプル</title> <script src="http://code.jquery.com/jquery-3.2.1.min.js"></script> <script> $(function(){ $(window).on('beforeunload', function(){ return "ページを閉じてもよろしいですか?"; }); </script> </head> <body> <form action="xx.php"> <input type="text" id="txt1"> <input type="submit" id="smt1" value="送信"> </form> </body> </html> |
例2)submit時を除くbeforeunloadで確認メッセージを表示する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>サンプル</title> <script src="http://code.jquery.com/jquery-3.2.1.min.js"></script> <script> $(function(){ $(window).on('beforeunload', function(){ return "ページを閉じてもよろしいですか?"; }); $("input[type=submit]").on('click', function(){ $(window).off('beforeunload'); }); </script> </head> <body> <form action="xx.php"> <input type="text" id="txt1"> <input type="submit" id="smt1" value="送信"> </form> </body> </html> |
解説
- 例1だと、ページを閉じる時に確認メッセージがでますが、submit時もメッセージが出てしまいます。
- 例2だと、submit時はメッセージが出ません。
- Chromeでは動作しません。 (調査中です・・)
Chromeでは動かないですね
コメントありがとうございます。
Chromeでは確かに動かないです。
当方でもいろいろと調べてみましたが、今の所動かす方法を見つけられませんでした。
見つかったら記事に載せます。