2011-07-08 13 views
15

アプリケーションでブラウザの終了イベントをキャプチャし、確認ボックスをユーザーに表示します。 私はJSF 2.0とrichfaces 4.0を使用しています。ブラウザのクローズイベントをキャプチャする方法は?

+0

これはJavaの質問ではありません(Javaでは.Netや純粋なHTML/JSとまったく同じ方法です)。 –

答えて

1

unloadイベントにハンドラを接続します。

+0

私はonbeforeunloadイベントで試しました。しかし、問題は、ページをリフレッシュするか、フォーム提出を行うときです。また、onbeforeunloadイベントも呼び出されます。 – Lan

+0

これらを区別する方法はありません。ブラウザは現在のドキュメントが置き換えようとしていることを伝えるだけです。それはなぜあなたにアイデアを与えるのではないのですか?* –

5

onbeforeunload

< body onbeforeunload="alert('Closing');"> 

例:

<html> 
<head> 
<title>`onbeforeunload` Event Demo</title> 
</head> 
<body onbeforeunload="return 'Are you sure you want to exit ?';"> 
</body> 
</html> 
+0

'beforeunload'イベントは' string'を返すことを意図しています。 [Docs](https://developer.mozilla.org/en/DOM/window.onbeforeunload)。 – alex

+0

@Alex情報をありがとう。 OPだけ関数呼び出しがほしい –

6

beforeunloadイベントを使用してください。

window.onbeforeunload = function(event) { 

    event = event || window.event; 

    var confirmClose = 'Are you sure?'; 

    // For IE and Firefox prior to version 4 
    if (event) { 
     event.returnValue = confirmClose; 
    } 

    // For Safari 
    return confirmClose; 

} 

これは、再読み込みやフォームの送信など、ウィンドウを閉じる以外にも他のイベントで発生することに注意してください。

+1

Alt-F4のための同じであり、ナビゲータ(タブまたはX)とあまりにもF5キー、ポストバックとリロードを閉じますか? – Kiquenet

17
window.onbeforeunload = function() 
{ 
    var shallIAlertUser = Do_Whatever(); //get boolen value 
    if (shallIAlertUser) { 
    //this will alert user 
    return 'Are you sure?'; 
    } 
    else { 
    //this wont 
    window.onbeforeunload = undefined; 
    } 
}; 
関連する問題