- PR -

画面が閉じたと同時に処理を行う方法の件について

1
投稿者投稿内容
いのき
ベテラン
会議室デビュー日: 2005/10/06
投稿数: 88
投稿日時: 2005-11-10 14:15
いつもお世話になります。いのきです。

最近、javascriptに非常に苦しめられています・・・(涙)。
今回は作業に関係ないのですが、空いた時間でjavascriptを学習して不明になった点です。

・サブミット処理(再描画あり)の画面で自分自身が完全に閉じられた時、ある処理を行う。

この内容を実現しようとし、onunload処理に以下のソースを記述しました。
/************************************************
* function test() {
* alert("koko");
* if (window.closed) {
* alert("ok");
* }
* }
************************************************/
上記のソースではアラートを出力しているだけなのですが、
画面を閉じた時、"koko"はアラート出力されるのですが、"ok"がアラート出力されません。

あるサイトで「window.closed」の説明を見たのですが、
/************************************************
* ブラウザウィンドウがクローズしても、そのウィンドウに対応するWindowオブジェクトは消えません。
* Windowオブジェクトはそのまま生き残りますが、closedプロパティにtrueが設定されます。
************************************************/
と記述していました。

ここで質問です。
closedプロパティはonunload処理が終わって、はじめてtrueになるのでしょうか?
また、その場合、最初に記載した内容を実現するにはどのようにすればよろしいでしょうか?

ご教授を宜しくお願い致します。
冬寂
ぬし
会議室デビュー日: 2002/09/17
投稿数: 449
投稿日時: 2005-11-10 14:44
あー。。。見覚えのある問題が。。。
キーワードを示せないで恐縮ですが、ここ(.netの方だったかもしれませんが)何回か同じような問題が論じられているので調べてみるといいですよ。

で、私の結論ですが、すっぱりと諦めてしまった方がいいです。
「閉じられた」というのが通常のプロセスで行われたならまだいいですが、
ケーブルを抜かれるなど、ネットにつながる経路を切断された状態で・・・
とか、強制終了された場合はどうなるか?
と考えると、閉じる時の処理に信頼性が無い、という事は想像できると思います。

いのきさんの問題とは関係ありませんが、私が過去、onunload時に処理されているか?
という実験をしてみたところ
(実験コードの詳細は忘れてしまいましたが)
あるコードだと
Firefoxだと思った通りに動作した
IEだと思った通りに動作しなかった
という結果が出て、以後考えない事にした、という事だけ覚えています。

色々検証しても、先の書いた通り信頼性が無いしメリットが少ないのではないでしょうか?

(メリットの事を考えないで、色々検証しているのだとしたらすみません。)
いのき
ベテラン
会議室デビュー日: 2005/10/06
投稿数: 88
投稿日時: 2005-11-10 14:58
いつもお世話になります。いのきです。

冬寂さん、早速のご回答ありがとうございました。
確かに冬寂さんがおっしゃるように、色々なことを考えると複雑そうですね・・・。
本当にあきらめた方がいいかも・・・。

今回はあくまで、今後同様の件があった場合を想定しての検証だったので
この内容に関しては後回しにしたいと思います。

ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)