人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

javascript:ページ遷移時に確認を出して、キャンセルしたら、遷移しないということをしたいと考えています。

window.addEventListener('beforeunload', function(){
if (execUnload) {
if (confirm('移動します\n[OK]なら移動、[キャンセル]なら移動しません')) {
return true;
} else {
return false;
}
}
}, true);

上記のスクリプトでは、キャンセルしても遷移してしまいます。どうすればいいのでしょうか?

●質問者: dingding
●カテゴリ:インターネット ウェブ制作
✍キーワード:JavaScript キャンセル スクリプト
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● okuryu
●28ポイント

Collection & Copy - ページ遷移前に確認をする、onbeforeunload

一部のブラウザでは動かないみたいですが、こちらの内容でどうでしょうか。

window.onbeforeunload = function(event){
 event = event || window.event; 
 event.returnValue = '<ユーザー定義の確認メッセージ>?';
}
◎質問者からの返答

ためになります。ありがとうございます。


2 ● ardarim
●42ポイント

onbeforeunloadハンドラの戻り値は何の意味も持ちません。


onbeforeunloadハンドラでウィンドウのクローズをキャンセルする場合は、event.returnValueに文字列を入れます。

そうすると、IEがその文字列を表示して本当に閉じるかどうかのダイアログを表示してくれます。(このダイアログでキャンセルを押せばクローズしません)


サンプル

window.addEventListener('beforeunload', function(){
 if (execUnload) {
 event.returnValue='移動します';
 }
}, true);

onbeforeunload


これは、セキュリティ上の問題でこのような仕様になっていると思われます。例えば悪質なポップアップを出すようなWebサイトが、ウィンドウを閉じられないよう制御できるとしたら、ユーザが永久に閉じられないような悪質なページが作成できてしまいます。そのため閉じるか閉じないかのダイアログの制御は必ずIEにさせて、ユーザの意思で閉じるか閉じないかを選択できるようにしている(スクリプトからは表示する文字列しか指定できない)と思います。

◎質問者からの返答

なるほど。そういうことでしたか。

ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ