Javascript 親ウィンドウを更新(Reload)してみる

意外ともたつくことが多いのでメモ。

ページの流れ

  • メインのページ(A)
  • サブウィンドウのページ(B)

  1. メインページ(A) のリンクから サブウィンドウ(B) を別窓で開く。
  2. サブウィンドウ(B) で、フォーム処理(ログインとかね)する。
  3. サブウィンドウ(B) を閉じたら、メインページ(A) を更新する。

この流れで、よくある失敗が、メイン(A)の更新処理を別ウィンドウ(B)から、どうやってアクセスするかというところ。

  • サブウィンドウ(B)から見たメインウィンドウ(A) → window.opener
  • それを location.reload() して更新する。

実際には、サブウィンドウ(B) の onload とか、 「閉じるリンク」の onclick などのいずれかに

<script type=”text/javascript”><!–
window.opener.location.reload();
//–></script>

を記述します。

onload に記述した場合、サブウィンドウ(B) を閉じる前に、バックグラウンドで更新するので、ウィンドウをブラウザの閉じるボタン[×] で閉じられた場合にも対応できるのでオススメ。

※メインページがフォームPOST直後のページだったり、動的なページの場合は、更新タイミングで「POSTデータを再送信しますか?」みたいな警告が出る場合があります。
これは、メインページの方で、対処しておくといいです。