• ベストアンサー

「画面が閉じられた」という行為をトリガーとして使えますか?

親画面から子画面をポップアップ表示し、子画面に作成したボタンから(window.opener)をコールして、子画面を閉じる→親画面の処理を行う、という処理を実現しています。 ボタン押下時にJavaScriptをコールすることで処理は行えるのですが、ウィンドウの右上にある「×」ボタンや、タスクバーを右クリック→閉じるなどを行った際にも同じような処理を行うことはできるのでしょうか? 「画面が閉じられた」というトリガーにて処理を行うことができるのでしょうか? よろしくおねがいします。

  • Java
  • 回答数3
  • ありがとう数3

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

  • ベストアンサー
  • PED02744
  • ベストアンサー率40% (157/390)
回答No.3

>body onUnloadイベントでJavaScriptをコールしたのですが、 >子画面を塗り替えで別画面表示させた場合はonUnloadイベントが発生し >JavaScriptがコールされたのですが、「×」ボタンや、タスクバーから >閉じた場合は発生しませんでした・・ そんなはずは無いとおもいますが。。 IE7で確かめましたが、 <html> <head> <script language="JavaScript" type="text/javascript"> <!-- function winUnload(){ alert("閉じます"); } // --> </script> </head> <body onUnload="winUnload();"> </body> </html> これでちゃんと[x]ボタンでもonUnloadイベントが拾えていますよ?? ただ、ページ書き換えでも受け取れてしまうので、そのへんは 下記参照のこと。

参考URL:
http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=559017&SiteID=7
DynamisH
質問者

お礼

回答ありがとうございます。 はっきりと切り分けたわけではありませんが、 マシンによって×ボタンに反応したりしなかったりでした・・・ 結局×ボタン対応はしないことになりましたので、クローズさせて頂きます。 お忙しいところありがとうございました。

その他の回答 (2)

回答No.2

body onUnload イベントを使用してみてください。

DynamisH
質問者

補足

回答ありがとうございます。 body onUnloadイベントでJavaScriptをコールしたのですが、子画面を塗り替えで別画面表示させた場合はonUnloadイベントが発生しJavaScriptがコールされたのですが、「×」ボタンや、タスクバーから閉じた場合は発生しませんでした・・ 別のトリガーが必要なのでしょうか。

回答No.1

「JavaScript」のカテゴリで質問された方が良い回答が得られると思います。

DynamisH
質問者

お礼

JavaScriptのカテゴリで質問させていただきました。 ご指摘ありがとうございます。

関連するQ&A

  • 画面を閉じる(×ボタンやタスクバーから)をトリガーに処理を行えるのでしょうか?

    親画面から子画面をポップアップ表示し、子画面に作成したボタンから(window.opener)をコールして、子画面を閉じる→親画面の処理を行う、という処理を実現しています。 ボタン押下時にJavaScriptをコールすることで処理は行えるのですが、ウィンドウの右上にある「×」ボタンや、タスクバーを右クリック→閉じるなどを行った際にも同じような処理を行うことはできるのでしょうか? 「画面が閉じられた」というトリガーにて処理を行うことができるのでしょうか? onUnloadイベントを試しましたが、「×」ボタンや、タスクバーを右クリック→閉じる場合は処理がおこわなわれませんでした。 よろしくおねがいします。

  • 子画面から親画面をクローズしたい

    子画面から親画面をクローズすると確認メッセージが表示されます。 非表示の方法はありますか? 現在の処理内容:  親画面:   ボタン押下時 onclick="window.opener='main';window.open('URL');return false;"  子画面:   onload時 window.opener.close(); 確認ブラウザ:IE10、Chrome43  ※IE10では表示されるが、Chrome43では表示されない。

  • javascriptのopenerでエラー

    naritanと申します。 現在、ファイルのアップロード機能を作成しております。 親ウィンドウから子ウィンドウを開いて、開いた子ウィンドウでアップロードするファイルを選択し、ボタンを押下時にcgiを実行して実現しています。 そこで、子ウィンドウでボタンを押下した時に、選択したファイルの名前を親ウィンドウに表示したいと思い、ボタン押下時にまず、javascriptに処理を移し、openerメソッドを使用して実現しようとしているのですが、「アクセスが拒否されました」というjavascriptのエラーが表示されてしまいます。 記述は以下のようにしています。 -------------------------------------------------- window.opener.document.FORM1.file_nm.value = str2; -------------------------------------------------- ※str2:ファイル名保持変数 ※file_nm:親ウィンドウFORM1上のテキストボックス名 ちなみに親ウィンドウと子ウィンドウの拡張子は異なっているので、ためしに拡張子を合わせて実行してみたところ、ファイル名は親ウィンドウに表示されたのですが、cgiが動かなくなってしまいました。 ちなみに親ウィンドウはhtsファイル、子ウィンドウはhtmlファイルです。 お分かりになる方が見えましたら、ご教授願います。

  • 子画面への値の渡し方

    親画面と子画面があるとします。 親画面にテキストボックスとボタンがあります。 親画面のボタンを押すと、javascriptのWindow.Openで 子画面を開きます。 子画面は、最初の初期表示で検索結果を表示します。 子画面の検索のキーは、親画面のテキストボックスが持っています。 この時、検索する為に子画面で、親画面のテキストボックスの値を 参照したいのですが参照方法が分かりません。 javascript ではwindow.opener 等で参照できるようですが プログラムの中で値を参照したいと考えております。 初期時なのでPage_Load等に組み込む予定です。 どのような手段があるのでしょうか。 (Delphi .net WEBで作成です)

  • JavaScriptのWindow.openで!

    JavaScriptのWindow.openで! お世話になってます。 JavaScriptのWindow.openについてお聞きします。 現在JavaScriptで・・・ リンクボタン押下→ポップアップ画面表示→再度リンクボタン押下  →再度ポップアップ画面表示(ポップアップ開きなおし) ということをしたいです。 IE6,7,8で対応する必要があるのですが、IE8でうまくいきません(泣) IE8では、ポップアップ画面を別プロセスで開くみたいで、 ポップアップがどんどん増えていってしまいます。 開くポップアップは一つにしたいのですが、対策がわかりません。 何か方法はないでしょうか? どなたかご教授ください。

  • プルダウンをトリガーにしたボタンの制御

    以下の処理をjavascriptで実現する事は可能でしょうか? (1)プルダウンにA,B、Cという値が入っていて、Bを選択したときだけボタンを表示 (2)B以外が選択されればボタンを非表示 (3)ボタンは押す事が出来て、それをトリガーに別のアクションを起こす。(別の画面を開くとか) 以上よろしくお願いします。

  • 子画面から親画面のデータを操作するには?

    4つのフレームから成る画面より子画面を開き、 (2番目のフレームに子画面を呼び出すボタンが有ります) 子画面から親画面の2番目と3番目のフレームのデータを 操作したいのですが、上手くいきません。 window.top.opener.frames[1].formxxx.xxxx.value=xxxxx; window.top.opener.frames[2].formxxx.xxxx.value=xxxxx; で良いと思ったのですが。。。 どなたか分かる方いらっしゃったら教えて下さい。

  • window.close()?でエラー

    javaScriptのwindow.close()で「プログラムにコマンドを送信している時に、エラーが発生しました」と言うエラーが出てしまいます。 但し、Windowは正常にクローズされています。 親画面から子画面をオープンし、子画面のオープン後に親画面自身をクローズしている処理です。 window.opener = window; window.close(); でクローズしています。 宜しくお願いします。

  • ASP.NETで子画面の処理でわからなく悩んでいます。

    ASP.NETで子画面の処理でわからなく悩んでいます。 ?親画面Aでボタンを押下すると、子画面Bが表示されます。 ?子画面Bが存在しないときは、子画面Bを表示をさせて存在するときは、  子画面Bの内容をリロードをしたいと思っています。  データの受け渡しは、 Sessionでしたいと思っています。 ?ボタン押下時の処理は下記に記載しました ⇒とりあえず画面表示がされます。 ?子画面が存在するときのチェックと子画面のリロードの方法を教えてください。 よろしくお願いいたします。  ASPか javascriptか迷ったのですが ASPであげさせて頂きます。 ' Dim scriptStr As String ' scriptStr = "<script type='text/javascript'>" ' scriptStr += "window.open('webMesai.aspx','_blank');" ' scriptStr += "</script>" ' ' ClientScript.RegisterStartupScript(Me.GetType(), "詳細画面", scriptStr)

  • javascriptで選択された行数を知る方法

    お世話になっております。 親画面にリストを表示し、そのリストの行ごとにボタンをつけております。 特定の行のボタンを押下すると子画面のポップアップが開き選択された 行に表示されているテキストを子画面に表示させたいのですが、どうも 方法がよくわかりません。 親画面のほうではPHPを使って$row[1]としてDBから値を取得しています。 リストのボタンが押下された時点で何行目のボタンを押下されたかを、子画面 が知る方法がわかれば、その行の$row[1]を取得すればいいと思うのですが、 何行目のボタンが押下されたかを子画面に知らせる方法が思い浮かびません。 あつかましいお願いなのですが、ヒントでもかまわないのでご教示お願いできない でしょうか? よろしくお願い申しあげます。 -----親画面のリスト表示 <head> <title></title> <script type="text/javascript"> function DispPopup(){ window.showModalDialog('/popup13.html', window, 'width=300,height=200'); } </script> </head> <?php $data_cnt=0; print "<form name=\"list\">"; print "<ul id=\"sort\">"; while ( $row = mysqli_fetch_array( $result ) ){ $data_cnt = $data_cnt + 1; print "<li id=\"idx_$data_cnt\" class=\"rr\">"; print "<span class=\"hl\">"; print "<input type=\"text\" value=\"$data_cnt\" id=\"sw_$data_cnt\" />"; print "</span>No.$data_cnt $row[0] $row[1]"; print "<input type=\"button\" value=\"変更\" OnClick=\"DispPopup()\">"; print "</li>"; } print "</ul>"; print "</form>" ?> -----子画面のポップアップ表示 <head> <title></title> <script language="JavaScript"> function disp(){ var opener=window.dialogArguments; //元画面のフォーム var opener_form = opener.document.forms(0); //自画面のテキストエリアを取得 var objTextarea = document.getElementsByName('ta')[0]; objTextarea.value += opener_form["str_2"].value; } </script> </head> <body onLoad="disp()"> <textarea name="ta"></textarea> </body>

専門家に質問してみよう