JavaScript(もしくはVBScript)を使用して、×ボタン押下時にScriptイベントを発生させたいのですが。リロードや、移動、POST時にはイベントを発生させたくありません。OnUnloadや、OnBeforeUnloadでは、×ボタン押下時以外の上記のパターンでもスクリプトが実行されてしまいます。×ボタン(ウィンドウが閉じられる)処理だけをHookすることはできないでしょうか?尚、ブラウザは、IE限定で良いです。(6以降)

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2004/01/16 19:12:11
  • 終了:--

回答(2件)

id:free00 No.1

free00回答回数22ベストアンサー獲得回数02004/01/16 19:16:31

URLはダミーです。

たとえば、ウィンドウを閉じるためのイベントありますよね。それを実行したときにイベントを出るようにすればいいんじゃないですか?

id:kurokw

その、閉じるボタンの時に発生するイベントが、

OnUnload、OnBeforeUnloadなのですが、質問内容にあるように他のイベントも拾ってしまうので、使えません。

2004/01/16 19:18:28
id:sushi0 No.2

sushi0回答回数66ベストアンサー獲得回数132004/01/17 11:56:14

ポイント100pt

http://www.hatena.ne.jp/1074247931#

JavaScript(もしくはVBScript)を使用して、×ボタン押下時にScriptイベントを発生させたいのですが。リロードや、移動、POST時にはイベントを発生させたくありません。On.. - 人力検索はてな

URLはダミーです。

IE6限定でよろしければ、(IE5も動くかもしれません。ただタブブラウザだと駄目だと思います)次のような方法があります。

function x() {

if(event.clientX<=-9000 && event.clientY<=-9000) {

処理

}

}

これを

<body onUnload=”x()”>

で呼び出すといいです。

リロードや移動だとclientXは0以上になると思います。

id:kurokw

ありがとうございます!

ほぼ完璧です。

実験してみたところ、フルスクリーンからの閉じるの場合は、event.clientXが-8900程度になったため、サンプルでは駄目だったのですが、(スクリーンの解像度で値は変わる??いろいろ実験してみます)

書かれている通り、

clientXは、表示状態なら必ず0以上、×なら0以下(8900以下?)というのは確実そうなので、使えそうです。

clientYは、表示状態でも0以下はあるみたいですが、せいぜい-100程度のようで、閉じた際にはー10000程度になるようでしたので、こちらも-8900以下等に設定しておけば使用にできそうです。

ありがとうございました!

2004/01/17 13:46:44

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

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

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

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

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