• ベストアンサー

孫ウインドウを閉じたら親をリロード

親ページをクリックして、サブウインドウを開き、さらにサブウインドウからクリックして孫ウインドウを開きました。 孫を閉じた時点(またはサブウインドウをリロードした時点でもよい)で、親ウインドウをリロードするにはどうしたら良いでしょうか。 孫閉じる→サブウインドウリロード→親ウインドウリロードを、孫をクリックしたことにより行いたい。 それぞれのページは不特定で、固定のURLはありません。

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

  • ベストアンサー
noname#199778
noname#199778
回答No.1

孫ウィンドウのページ内に、以下のスクリプトを仕掛ければ、良いのではないかと思います。 window.opener.opener.location.reload(); これで、孫ウィンドウから見たopener(子ウィンドウ)の、更にそのopener(親ウィンドウ)に対してリロードをかけることができると思います。 ただ、ご質問の内容から見ると、孫ウィンドウが閉じた時に子ウィンドウがリロードされる仕掛けと、子ウィンドウがリロードされた時に親ウィンドウがリロードされるという仕掛けを入れておいて、孫ウィンドウから子ウィンドウをリロードし、子ウィンドウから親ウィンドウをリロードするという、連鎖的なアクションでも良いかもしれませんね。 こういったアクションでよければ、以下のソースを、子ウィンドウと孫ウィンドウに読み出すそれぞれのHTMLファイルに追加してみてください。 <script type="text/javascript"><!-- function refresher(){ if (window.opener){ window.opener.location.reload(); } } window.onunload=refresher; //--></script> このスクリプトでは、window.onunloadでページがアンロードされたイベント(リロードやページ移動、ウィンドウを閉じるなどで現状のページが破棄された時)を拾い、指定の処理を実行します。 ここではrefresher()という、親ウィンドウをリロードする関数を指定しています。 これを子ウィンドウ内のHTMLと孫ウィンドウ内のHTMLに仕掛けておけば、子ウィンドウをリロードしたタイミングでも、孫ウィンドウを閉じたタイミングでも、子ウィンドウと親ウィンドウのリロードがかかると思います。 とりあえず、手元で確認した分では、IEとNetscapeでは、期待通りの動作になってくれるのではないかと思います。 参考になれば…

s-holmes
質問者

お礼

ネットを探していたら opener.closed をみつけたので、下記のようにして処理できそうです。 お騒がせ致しました。 function refresher(){ if( !opener || opener.closed ) { alert("親なし"); } else{window.opener.location.reload();} } window.onunload=refresher;

s-holmes
質問者

補足

丁寧な回答ありがとうございました。 アドバイスの方法で目的達成できます。(^O^) 他力本願で申し訳ありませんが、実際に使う場面では、 親→子→孫 のパターンが9割   子→孫 のパターンが1割 あり、「親がない場合は」とかの良い方法はないでしょうか。

関連するQ&A

  • 前のページの親ウインドウをリロードできます?

    やりたいことは、 前のページの親ウインドウをリロードすることです。 親ウインドウのリロードは使っています。 「前のページの」というところが「???」です。 1クリック→ 2サブウインドウ開く→ここでリンククリック→ 3サブウインドウの次のページ #3でリンククリックしたときに1の親ページをリロードしたいのですが。

  • サブウインドウから親ウインドウの操作

    サブウインドウから親ウインドウのあるフォームの ボタンを押した時と同じ動作をさせたいのですが、 サブウインドウから、親(呼び出し元)ウインドウの メソッドを呼ぶ方法はありますでしょうか? ダメであれば、サブウインドウから親ウインドウを リロードする方法でもOKです。 よろしくお願いします。

  • 孫ウィンドウから親ウィンドウを操作

    javascriptを使用して以下の物を作りたいと考えています。 1.親ウィンドウから子ウィンドウを開く 2.子ウィンドウから孫ウィンドウを開き、自動的に子ウィンドウを閉じる 3.孫ウィンドウから親ウィンドウのページを切り替え、自動的に孫ウィンドウを閉じる 2までは出来たのですが、3は子ウィンドウを閉じてしまう為にopenerが使えません。 他の方法も調べてみたのですが、どうしてもうまくいきませんでした。 何か良い方法はないでしょうか?

  • 親ウィンドウで飛んだときに子ウィンドウをクローズ

    ページ内にあるリンクからサブウインドウを開いた場合、 親ウインドウが別ページに移った時や閉じた時に、サブウインドウも同時に閉じる事は出来ますか?

  • サブウィンドウから親ウィンドウをリロード

    サブウィンドウから親ウィンドウをリロードするときに、 window.opener.location.href = "A.html"; のような使い方をしていますが、親ウインドウのアドレスを指定せずに行う方法がありましたら教えていただけないでしょうか。

  • 親ウインドウのURLの取得

    やりたいことは、サブウインドウを開いた時に親ウインドウのURLを取得したいのですが、下記では取れませんでしたので質問させていただきました。 document.referrer

  • リロード時のテキストフィールドのデータの保持

    親ウィンドウのプルダウンにサブウィンドウからデータを追加するページを作っています。 サブウィンドウの保存ボタンをクリックすると親ウィンドウをリロードし、追加したデータがプルダウンに表示させるようになっています。しかし、親ウィンドウにはほかにもテキストフィールドがあり、リロードすると消えてしまいます。 サブウィンドウからリロードをかけたときに親ウィンドウのテキストフィールドのデータを保持するようにしたいのですが、どのようにしたらできますか? 助言をお願いします。 宜しくお願い致します。

  • 「リロード」ボタンをページ内に作りたい

    つまりは、「ブラウザのリロードボタンをクリック」を ページ内で実現させたいのです。 ex.あるページのある部分をクリックするとそのページが   リロードされる。 こんなことってHTML文で可能なのでしょうか?

    • ベストアンサー
    • HTML
  • header("Locationとリロードについて

    Chromeでリロードしても、header("Location がうまくいきません。 リロードした際も、URLを遷移させるにはどうすればいいでしょうか? ▼index.php <?php  header("Location: http://yahoo.co.jp/");  exit; ?> ・URL入力後、右クリック&再読み込み → 遷移しない ・URL入力後、F5 → 遷移しない ・URL入力後、URL入力欄左にある「このページを再読み込みします」のマーク → 遷移しない(遷移するときもある?) ・URL入力後、Enter → 遷移する ・URLを「貼り付けて検索」 → 遷移する 後、Chromeで、以下の3つに何か違いはあるのでしょうか? ・右クリック&再読み込み ・F5 ・URL入力欄左にある「このページを再読み込みします」のマーク

    • ベストアンサー
    • PHP
  • resizeToを使わずに、ウインドウを固定したい

    flashのファイルを、サブウインドウではなくもともとのindex.htmlで固定させたいのですが、可能なのでしょうか? resizeToを使って、さらに document.body.style.overflow = "hidden"; でスクロールを消しても、結局は右端をつかめば、ウインドウサイズを大きくできてしまいます。 サブウインドウであれば、window.openでサイズを指定、スクロールを消せば問題なく動かすことができます。 一度htmlでトップページを作り、そこからクリックしてサブウインドウにindex.htmlを表示させるしかないのでしょうか…? どなたか、方法をご存知の方いらっしゃいましたらよろしくお願いいたします。

専門家に質問してみよう