WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:xボタンイベント

0:[投稿] けい [2002/10/04 21:16 ][環境:WIN+IE PHP]

windowをxボタンで閉じる時のイベントは
JavaScriptで取れるのでしょうか?
またはxボタンを押させないようにするイベントとか。

セッションで管理する画面を作りたいのですが、
ユーザーがログアウト処理をせずにwindowを閉じようとした場合が問題になっていて、イベントを取ることが出来れば、alertで警告くらいできるかな〜という理由です。

セキュリティ上できないだろうな、とは思うのですが、
なにか技がありましたらご教授ください。


1:[回答] 平野 敬 [MAIL] [URL] [2002/10/04 22:34 ]

onunload イベントではダメですか。


2:[回答] 平野 敬 [URL] [2002/10/04 22:38 ]

よく考えてみたらダメですね。失礼しました。


3:[質問] けい [2002/10/05 22:44 ]

うーん、
やっぱりwindowを閉じる時のイベントは取れないのでしょうか…

たとえば、ブラウザを閉じようとすると
「bye」等が画面に表示されるサイト、ありますよね。

あれはどうやってるんだろう...


4:[回答] あ [2002/10/06 23:25 ]

http://tohoho.wakusei.ne.jp/js/window.htm
このあたり


5:[回答] Malic [2002/10/07 10:18 ]

IEのみなら、onUnload で可能だったはず。

<html>
<head><title>テスト5</title>
</head>
<body onUnload="javascript:alert('×で閉じないで');">
</body>
</html>

ウインドウは閉じるけど、ログアウト処理をするための電文を飛ばすことはできると思います。


(但し、スクリプト内で多重ループ等を使い、処理に時間がかかるようだと、期待どうりの処理がされるかは分かりませんが)


6:[回答] Malic [2002/10/08 15:49 ]

補足:onUnload は正常な(期待通り)操作の画面遷移でも実行されるから、 隠し項目にフラグを用意しておくこと。

ログアウト以外の操作をした場合は、フラグを変更して、ログアウト処理を回避しないと・・・


7:[回答] のほだ [MAIL] [2002/10/11 14:16 ]

unload イベントのクライアント座標(x,y)に特異な値が返ってくるようなので、それが判断目安に使えると思いますよ。×ボタン、システムメニュー、ブラウザメニューおよびタスクマネージャからの強制終了全て同じような特性を持っています。
(肝心の値の真意は分からないですが)

具体的にはこんな感じです。

function window.onunload() {
 if(self.closed || (event.clientX<=-9000 && event.clientY<=-9000)) {
   // セッション解放処理
 }
}


8:[質問] Malic [2002/10/11 17:51 ]

function window.onunload(){ ・・・}

という関数は、bodyタグの onUnload イベントで呼ばなくても良いのでしょうか?

(関数名が特殊なものなのでしょうか?、オブジェクトのような記述してるので。)


9:[回答] のほだ [MAIL] [2002/10/11 18:16 ]

えーと、正確ではないかも知れませんが、呼ばなくていいです。

onunload=func;
function func() {
}

と同じことです。ただ、絶対そうとも言えなくて、自ウインドウ以外はwindow.document.body.onunload = func で閉じる際のイベント処理をさせないと期待通り行かないと思います(IEは)。


10:[回答] ween [2002/10/11 18:32 ]

window.onunload のような識別子に使えない文字列での関数宣言は
ECMAScript仕様では出来ません。
IEはこういう表記での関数宣言を許可しているようなので
動作対象がIEだけなら問題ないと思いますが、
他のECMAScript実装では構文エラーになると思ってください。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World