質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

3808閲覧

ページを閉じた際にアラートを表示させたい

grape123

総合スコア8

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2017/05/17 22:25

編集2017/05/17 23:06

タイトルの通り、ページを閉じた際にアラートを表示させたいと思っています。

具体的に実現したいことは

・ページを戻る、もしくは閉じた際にアラートを指定のメッセージで表示
・別のページへ促すリンクとそのボタンの設置(ページを離れる、ページにとどまると同じように)

この2点です。

現在書いているコードはhtml上に書き込んでおり、アラート内のボタン設置は一旦留め、メッセージのみ実現させようとしています。
下記カードでカスタムメッセージについてはIEでのみ動作確認できましたが、それ以外では動作しませんでした。できればchromeでカスタムメッセージを表示させたいと思っております。

PHP

1 2<?php wp_enqueue_script('jquery'); ?> 3 4<?php 5 $alert_pages = array(); 6 if( in_array($alert_pages)): ?> 7<script> 8 jQuery(document).ready(function(){ 9 jQuery(window).on("beforeunload", function(e){ 10 return "メッセージ"; 11 }); 12 jQuery("input[type=submit], input[type=button], input[type=image]").click(function() { 13 jQuery(window).off('beforeunload'); 14 }); 15 }); 16</script> 17

PHP

1<script type="text/javascript"> 2 var postsw = 0; 3 if (window.attachEvent){ 4 window.attachEvent('onbeforeunload', unloadCheck); 5 } 6 else { 7 window.addEventListener('beforeunload', unloadCheck, false); 8 } 9 10 function unloadCheck(ev) { 11 12 var str; 13 if ( postsw == 0 ) { 14 str = "★★★★★★★★★★★★★★★★★★★★★★\n"; 15 str += " ページを移動しないで下さい!!\n"; 16 str += "★★★★★★★★★★★★★★★★★★★★★★\n"; 17 ev.returnValue = str; 18 return str; 19 } 20 } 21</script>

PHP

1<script> 2 $(function() { 3 var elementClicked = false; // 適当なフラグ 4 $(window).on("beforeunload", function() { 5 if (!elementClicked) { 6 return "本当に遷移しちゃう?"; 7 } 8 }); 9 $(document).on("click", "a, button, input[type=submit]", function() { 10 elementClicked = true; 11 setTimeout(function() { elementClicked = false; }, 100); 12 }); 13 }); 14</script> 15

上記の3つのコードはどれもコピペです。
今後これらのコードを元に編集をしていこうと考えておりますが、参考にするべきサイトや現環境でも動作するイベントハンドラなど教えて頂けないでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

残念ながら、最近のブラウザではonbeforeunloadでできることが「ブラウザ組み込みのメッセージを表示する」だけになっています(Qiita過去の質問)。

投稿2017/05/17 22:48

maisumakun

総合スコア145184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

grape123

2017/05/17 22:59

早速の回答ありがとうございます。 指定のメッセージを表示させることはできず、ボタンの追加もできないんですね。 onbeforeunloadでできないということであれば、他に何か別のイベントハンドラ?はありますでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問