アプリ版:「スタンプのみでお礼する」機能のリリースについて

親ページをクリックして、サブウインドウを開き、さらにサブウインドウからクリックして孫ウインドウを開きました。
孫を閉じた時点(またはサブウインドウをリロードした時点でもよい)で、親ウインドウをリロードするにはどうしたら良いでしょうか。

孫閉じる→サブウインドウリロード→親ウインドウリロードを、孫をクリックしたことにより行いたい。

それぞれのページは不特定で、固定のURLはありません。

A 回答 (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では、期待通りの動作になってくれるのではないかと思います。
参考になれば…

この回答への補足

丁寧な回答ありがとうございました。

アドバイスの方法で目的達成できます。(^O^)

他力本願で申し訳ありませんが、実際に使う場面では、

親→子→孫 のパターンが9割
  子→孫 のパターンが1割
あり、「親がない場合は」とかの良い方法はないでしょうか。

補足日時:2003/12/06 14:52
    • good
    • 0
この回答へのお礼

ネットを探していたら
opener.closed
をみつけたので、下記のようにして処理できそうです。
お騒がせ致しました。

function refresher(){
if( !opener || opener.closed ) {
alert("親なし");
}
else{window.opener.location.reload();}
}
window.onunload=refresher;

お礼日時:2003/12/06 16:17

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