• ベストアンサー

Webウィンドウの×イベントを拾う方法を教えてください。

Webウィンドウの×ボタンがクリックされたとき、ASPプログラム内でセッションを開放したいのですが、×ボタンがクリックされた。というイベントをASP側でどうやって拾うのでしょうか?教えてください。 拾えないとすれば、×ボタンをクリックした時点でどうやってセッションを開放するのですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • dw3w
  • ベストアンサー率63% (14/22)
回答No.2

プロトコルから考えると、HTTPはステートレスの通信なのでクライアントとサーバーの接続は一回ごとに独立しています。 クライアント(ブラウザ)がWWWサーバーにページ(ASP)を要求 ↓ WWWサーバーが処理を行い結果(HTML)を返却 これで終わりです。 という事で、WWWサーバー側ではブラウザに対してレスポンスを返却したあとは、そのブラウザが閉じられたことを知るすべはありません。 ただ、ブラウザがWWWサーバーに通信を要求し、処理を返す前に閉じられてしまった場合のみは、Response.IsClientConnectedプロパティで参照できます。 そうでなく、例えば、ブラウザのページを見ているユーザーが、次のページを要求することなくブラウザを終了したことを知る必要があれば、JavaアプレットやクライアントサイドのActiveX、あるいはFlashなどを使って通信を監視する必要があります。 なので、セッションを開放するのはセッションがタイムアウトするのを待つよりありません。ちなみに、Session_OnEndイベントが発生するのはセッションがタイムアウトして破棄された場合だったと思います。

sho-go
質問者

お礼

詳しいご説明まことにありがとうございました。

その他の回答 (2)

  • LemonT
  • ベストアンサー率49% (39/79)
回答No.3

こんばんは。 No.2の方の補足です。 >Session_OnEndイベントが発生するのはセッションがタイムアウトして破棄された場合だったと思います。 Session_OnEndイベントは、セッションがタイムアウトして破棄された場合と、Session.Abandonを発行した時に発生します。(正確にはSession.Abandon発行後、クライアントにデータが送り終わってから。)

sho-go
質問者

お礼

了解しました。ありがとうございます。

  • mann555
  • ベストアンサー率46% (29/62)
回答No.1

各ページに下記を入れて if Response.IsClientConnected = false then Response.End end if global.asa にて Sub Session_OnEnd Session.Abandon end sub とか

sho-go
質問者

お礼

ありがとうございました。勉強になりました。

関連するQ&A