ウインドのタイトルバー右上にある「×」が押されてウインドウが閉じられる
場合というのは取得できるでしょうか?
closeやanLoad等使用して自分なりにもやってみましたが、
どうしてもうまく行きません。

分かる方、参考になるHP等知っている方よろしくお願いします。

A 回答 (2件)

ちょっと試してみたのですが、


submitを使用しますと、その後にunloadが実行されてしまうようです。
右上の閉じるボタン(以下、[x])を押した場合にもunloadが実行されてしまうようなので、
onUnloadの指定だけですと、だめです。
そこで、かなり強引な方法を思いついたので、一応書いておきます。

----------------------------------------------------------------------
<html>
<head>
<title>submit</title>
<script language="JavaScript">
<!--
function check(){
  if(event.clientX<0) //clientXはクライアント領域(ウィンドウ)上のX座標
  alert('またきてね');
}
//-->
</script>
</head>
<body onUnload="check()">
<form action="http://www.yahoo.co.jp/">
<input type="submit">
</form>
</body>
----------------------------------------------------------------------

こんな感じでclientXを使用しますと、
[x]を押したときにはクライアント領域を抜けてでしまっているので、
clientXの値はマイナス値を取ります。
それを利用して、[x]を押した場合とsubmitを押した場合で、
場合わけをしてみました…。
上の例ですと、[x]を押した場合だけ、「またきてね」が表示されます。
参考になるかわかりませんが^^;

IE6で動作確認。
    • good
    • 0
この回答へのお礼

お返事遅れてすいませんでした。
kentayosさん何度もありがとうございます。
とても参考になりました^^
色々とお手数をおかけしてすいませんです。

本当にどうもありがとうございました。

お礼日時:2002/03/04 12:00

どうも^^kentayosです。


ページが閉じられるイベントを取得するには、
「onUnload」を使えばできます。

---------------------------------------------------------------------
<body onUnload="alert('またきてね');">
---------------------------------------------------------------------

ただし、この例だと、ページが閉じられたあとに
虚しくアラート出てしまうので、

---------------------------------------------------------------------
<body onUnload="alert('またきてね'); window.open('test.html','_blank','')">
---------------------------------------------------------------------

こんな感じにするとウィンドウを閉じつつ、
新しいウィンドウを開かせることができます。
「広告を閉じると新しいウィンドウが開く」というあれですね…
    • good
    • 1
この回答へのお礼

さっそくのお返事ありがとうございました。
しかし、この方法だとsubmitした場合にも処理してしまいますよね?
理由があり一枚の画面にsubmitさせているためこの方法ではちょっと・・・

お礼日時:2002/02/28 18:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QHTAで,親ウインドウを閉じると同時に子ウインドウも閉じる

HTAを使っています。
*.htaのファイルにjavascriptを下記のとおり書いています。

目的は,親ウインドウで「閉じる」というボタンを押すことで
親ウインドウを子ウインドウを閉じるという動作をさせることです。

概ね上手く動きますが,子ウインドウが既に閉じられている状況で実行すると,「リモートサーバマシンが存在しないか,利用できません。」とエラーになります。

WINDOWS2000では問題無く動きますが,XPだとエラーが表示されます。

どうすれば,子ウインドウの状況によらず正常に動作するでしょうか?


##########################################################
<input type="button" value="終了" onclick="closeWindow()" class="tukuru">

var subWin=""; //subWinをグローバル変数として宣言
function closeWindow(){

item1.style.display="";

setTimeout("end()",2000);

}

function end(){

if ( subWin.closed == false ) {;

if(subWin.name+''=='OpenWindow'){;

subWin.close();

};
};
window.close();

}

HTAを使っています。
*.htaのファイルにjavascriptを下記のとおり書いています。

目的は,親ウインドウで「閉じる」というボタンを押すことで
親ウインドウを子ウインドウを閉じるという動作をさせることです。

概ね上手く動きますが,子ウインドウが既に閉じられている状況で実行すると,「リモートサーバマシンが存在しないか,利用できません。」とエラーになります。

WINDOWS2000では問題無く動きますが,XPだとエラーが表示されます。

どうすれば,子ウインドウの状況によらず正常に動作...続きを読む

Aベストアンサー

#1さんがおっしゃるように
>これは何のオブジェクトを使っていますか?
がわからないと見当違いの回答になる可能性があります。

試しやすい方向で勝手に解釈しました。
subWin = window.open()
で子ウィンドウを開いています。
環境はxp,IE6です。

呼び出したウィンドウが存在しなくなっているので
subWinのプロパティを参照するとエラーになるの仕方がないと思います。
以下、エラーの有無によって処理を分けています。

function end(){
try{
var chkWin = subWin.closed;
subWin.close();
window.close();
}catch(e){
//エラー発生時
window.close();
}
}

Q閉じる「×」のないウインドウの作り方

下記のようなウインドウもしくは、全く形式の?のウインドウでもけっこうですが、右上の閉じる「×」もないウインドウはどのように作れますか?

<SCRIPT language=JavaScript>
window.open("sample.htm","plan","width=600,height=600,scrollbars=1,menubar=no,resizable=yes,left=10,top=10");
</SCRIPT>

Aベストアンサー

titlebarを使えばよいと思うが#1の理由で動作せず。

fullscreenは動作するかもしれないが
使ってはいけないと思う。

Qウインドウを閉じた時子ウインドウを開きたい

JavaScriptでいいのですがウインドウを×の閉じるボタンで閉じられた時別ウインドウを開きたいのですが可能なのでしょうか?
よろしくお願いします。

Aベストアンサー

こんにちわ。

>onunload='closeEvent()'を使うとIEではポップアップとしてダイアログがでるじゃないですか。
>そのあたりを回避できないですか?

これはどんな状況を指していますか?
JavaScriptでwindow.openで開かれるウィンドウは「ダイアログ」では無く「ウィンドウ」なので・・・

1.ウィンドウの「×」ボタンが押された場合のみ動作させたい。
  他のページ移動のリンクの際等には別ウィンドウを表示させたくない。

という意味で言われているのか

2.ダイアログのようにツールバーなどの状況が通常のウィンドウと異なってしまう

ということを言われているのでしょうか?

1の場合についてはonunloadが「documentのオブジェクトが破棄されるタイミング」という動きなので、他のリンクなどを押した場合に別の変数をフラグとしてセットして、それがセットされていれば、別ウィンドウを表示しない・・・というような回避策が必要でしょう。
(×ボタンそのもののイベントは拾えなかったはずですから・・・非表示にする制御もできませんし)

2の場合については(akanekorさんサンプルに修正を加えたソース)
--------------------------------------------------
<html>
<head>
<script type="text/javascript">
function closeEvent()
{
document.all["LINK_ID"].click();
}
</script>
</head>
<body onunload='closeEvent()'>
aaaa
<A HREF="" ID="LINK_ID" TARGET="_blank"></A>
</body>
</html>
--------------------------------------------------
のようにダミーでリンクを作成しておき、それに対しclickイベントを発生させれば、デスクトップなどからIEを立ち上げたのと近い状態でウィンドウを表示させることができます。(簡単にIEでのみしかテストしてないので・・・)

こんにちわ。

>onunload='closeEvent()'を使うとIEではポップアップとしてダイアログがでるじゃないですか。
>そのあたりを回避できないですか?

これはどんな状況を指していますか?
JavaScriptでwindow.openで開かれるウィンドウは「ダイアログ」では無く「ウィンドウ」なので・・・

1.ウィンドウの「×」ボタンが押された場合のみ動作させたい。
  他のページ移動のリンクの際等には別ウィンドウを表示させたくない。

という意味で言われているのか

2.ダイアログのようにツールバーなど...続きを読む

Q次のウインドウを開いた時に前のウインドウを閉じるタイミングについて

現在ページから次のウインドウを開く際に次のウインドウを開いたら、元のページ(現在ページ)を閉じる方法は、次のウインドウ内に、
<METAタグ内の<scriptで
window.opener.window.close();
とすればよいのでしょうか?
それとも、OnLoadで上のwindow.opener.window.close()とすれば良いのでしょうか?

また、現在ページの段階から次のページを呼んだ瞬間に現在ページを閉じる方法はあるのでしょうか?

定石があるのでしたら知りたいです。

Aベストアンサー

私が実現している方法です。
呼出元ファイルに追加しています。
まずは、
ret = window.open('../aaaa,html','','location=no,menubar=no,toolbar=no, scrollbars=1,status=no,resizable=yes,top=0,left=0,height=' + hs + ',width=' + ws);
if((ret == null) || (ret.closed == true))
{
alert("ポップアップブロッカーが機能しました。\nポップアップブロッカー回避操作を行って下さい。");
}
// 画面を強制終了する
ForceClose();

ForceClose();は、以下のように、なっています。
//********************************************//
// 強制画面終了 //
//********************************************//
var busy=false;
function ForceClose(){
if(!busy){
busy=true
if(navigator.appName=="Netscape"){
/*
window.openで開かれたウィンドウでは警告が出ない
このウィンドウ自体がwindow.openで開いたものだと思わせるようなイメージ
*/
window.open("","_top")
window.close()
}else{
if(document.all&&(navigator.userAgent.match(/MSIE (\d\.\d)/),RegExp.$1)>=5.5)
{
/*
IE5.5以降も考え方は同じ
IE6.0では普通にclose()だけでも警告なし
*/
var w=window.open("","_top")
w.opener=window
w.close()
}
else
{
/* IE4,IE5.0は[いいえ]を選択したらまた同じダイアログを表示し続ける*/
window.close()
var timer=setTimeout("busy=false;forceclose()",500)
}
}
}
}

私が実現している方法です。
呼出元ファイルに追加しています。
まずは、
ret = window.open('../aaaa,html','','location=no,menubar=no,toolbar=no, scrollbars=1,status=no,resizable=yes,top=0,left=0,height=' + hs + ',width=' + ws);
if((ret == null) || (ret.closed == true))
{
alert("ポップアップブロッカーが機能しました。\nポップアップブロッカー回避操作を行って下さい。");
}
// 画面を強制終了する
ForceClose();

ForceClose();は、以下のように、なっています。
//*********...続きを読む

Q子ウインドウを閉じて 親ウインドウを更新

初歩的なことなのかもしれませんが、ご教授いただけると助かります。

やりたい動作は、

親ウインドウから<a href="" target=_blank>で
子ウインドウを開きます。

子ウインドウで処理を行った後、

----ここからの動作がわかりません-----

子ウインドウ上のボタンかアンカータグで

親を再読み込み
子を閉じる
親にフォーカス

こんな動作をJAVASCRIPTで実現可能でしょうか?
結果的に、子が閉じられ、親が再読み込みされた状態でフォーカスがあたるようにできれば最高です。

暇なときでかまいませんので、どうぞよろしくお願いいたします。

Aベストアンサー

こんな感じでいいかと思います
------------------------------
<script type="text/javascript">
<!--
function p_reload(){
var pwin=window.opener;
pwin.location.reload();
pwin.focus();
window.close();
}
//-->
</script>

<button type="button" onclick="p_reload()">親を更新して閉じる</button>


人気Q&Aランキング

おすすめ情報