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


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

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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/01/12 23:33:41
  • 終了:2007/01/13 14:44:37

回答(2件)

id:okuryu No.1

okuryu回答回数72ベストアンサー獲得回数32007/01/13 01:43:23

ポイント28pt

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

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

window.onbeforeunload = function(event){
  event = event || window.event; 
  event.returnValue = '<ユーザー定義の確認メッセージ>?';
}
id:dingding

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

2007/01/13 14:43:46
id:ardarim No.2

ardarim回答回数892ベストアンサー獲得回数1422007/01/13 12:37:40

ポイント42pt

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


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

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


サンプル

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

onbeforeunload


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

id:dingding

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

ありがとうございます。

2007/01/13 14:44:06

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません