親画面と子画面の連携にメディエータを使う

次のような要求があった場合、どうしようか考えている。

子画面を開きながら、親画面へ子画面の情報を反映させたい。
子画面を開いている間、親画面は別の画面に遷移させる場合もある。

例えば、子画面がgoogleやyahooのような検索画面で、子画面で検索した内容を親画面へ反映させたい場合である。子画面は同じ検索画面のままだが、親画面はユーザの操作により、様々な画面になりうる。

このような場合、先日のエントリー「window.openとwindow.showModalDialogを使用して、子画面と親画面のやりとりをする」で紹介した方法では、うまくいかないだろう。なぜなら、子画面で親画面のwindowオブジェクトを取得しても、親画面が別の画面に遷移してしまえば、window.openerを介しても親画面の項目に値を反映させることができなくなるからだ。

それなら、メディエータを用意して、親画面の参照をそこに保持させればいいのではないかと思った。子画面は親画面と直接やりとりするのではなく、メディエータとやり取りをする。親画面も子画面と直接やりとりするのではなく、メディエータとやり取りをする。


このようにすればできるのだろうか。
でも、メディエータはどこで保持すればいいのかな。。。。