• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:javascript の locationメソッド)

JavaScriptのlocationメソッドで子ウィンドを閉じる方法

このQ&Aのポイント
  • JavaScriptのlocationメソッドを使用して、子ウィンドウを閉じる方法について説明します。
  • 子ウィンドウを開いた後に親ウィンドウに指定のURLを表示させるためには、window.opener.location.replaceメソッドを使用します。
  • しかし、親ウィンドウにURLが表示されない場合は、親ウィンドウを再読み込みする必要があります。この場合、window.opener.location.reloadメソッドを使用します。

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

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

ご提示のスクリプトだと、通常のブラウザのアドレス欄にURLを記述してリターンキーを押すのと同時にF5キー(リロード)を押しているようなものではないでしょうか。 この時の動作は何が正しいのかは知りませんが、ブラウザによって、あるいは状況によっても結果が異なる可能性があります。 >ページをリロードすれば動作するので、 無駄にリロードするようなことをせず、一度の読込みで正しく動作するように考えた方がよろしいかと。 >子ウィンドの処理でセッションに保存されたセッション変数を読み込んで動きます。 どのようなタイミングで変数をphp側に送っているのか不明ですが、送信と(親ウィンドウの)ページ遷移(読込み)とのタイミング(順序)が正しく行なわれるようになっているでしょうか? 特に、通信を伴う処理の場合、大元のスクリプトでは正しい順序であっても、通信時間によっては実際の処理の順序が逆転することが起こり得ます。 あるいは、親ウィンドウ側でキャッシュを読み込んでいるような可能性はありませんか? このあたりを整理することで、リロードしなくとも動作するのではないかと推測しますが… とはいうものの、ご提示のスクリプトをむりやり動作させるには…  1)親ウィンドウのページ遷移を実行  2)親ウィンドウを監視して、読込み終了を待つ  3)読込み終了後、親ウィンドウをリロード のような手順で行なえば、少なくともリロードはできそうに思いますが。

kvex
質問者

お礼

遅くなりました。 おおよそご指摘のような手順で完成しました。 ありがとうございました。 chromeのキャッシュに泣かされていたので、強制的にリロードさせたりしてみたかったのです。 ありがとうございました。