意外ともたつくことが多いのでメモ。
ページの流れ
- メインのページ(A)
- サブウィンドウのページ(B)
- メインページ(A) のリンクから サブウィンドウ(B) を別窓で開く。
- サブウィンドウ(B) で、フォーム処理(ログインとかね)する。
- サブウィンドウ(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データを再送信しますか?」みたいな警告が出る場合があります。
これは、メインページの方で、対処しておくといいです。