2010年11月1日月曜日

ブラウザの「閉じるボタン」のイベントを取得する

ちょっと必要になったので調べました。

ブラウザの閉じるボタンを押された時のイベントで処理をしたい場合。
function window.onbeforeunload() {
    if(((event.clientX > document.body.clientWidth) && (event.clientY<0)) || event.altKey ) {
        xxxFunc();
    }
}


IE7などのタブブラウザはこっち。
function window.onbeforeunload() {
    if( event.clientY < 0 || event.altKey ) {
         xxxFunc();
    }
}


▼IEのonbeforeunloadイベントの仕様はこちら
http://msdn.microsoft.com/en-us/library/ms536907.aspx


onbeforeunloadイベントは閉じるボタン以外でも
  • location.hrefに新しいlocation を設定した場合
  • location.reload() メソッド呼び出しの場合
  • window.close() をだした場合

などでも動作するので条件を入れるわけですが、
タブブラウザに合わせた実装だとロケーションバーにフォーカスをあてて
Enter押下でも動作してしまったり。。

なんかいい方法ないかな。。

参考URL
ブラウザの「閉じるボタン」とタブの「閉じるボタン」
IEでのonBeforeUnload の挙動
javascript:ページ遷移時に確認を出して、キャンセルしたら、遷移しないということをしたいと考えています。
IEの特定のキー操作を無効化

0 件のコメント:

コメントを投稿