ヘルプに入っているプロジェクトで、妙な現象に悩まされた。
JavaのWebアプリで、同じホストにOC4Jで二つのWebアプリを動かしている。
で、一日ほど頭を冷やして冷静にGoogleで検索したら一発でヒットしてすごい哀しい(*1)。
・The cookie may be lost when a window is opened from a modal or modeless HTML dialog box in Internet Explorer 6
http://support.microsoft.com/kb/831678/en-us
「IEの仕様」であることは確かだが、回避方法も上記KnowledgeBaseに載っている。
まずshowModalDialogをするときに第二引数に元のアプリのwindowオブジェクトを渡す。さらにpopupウインドウ内からdialogArguments経由で取得されたwindowオブジェクトを使って、open()でウインドウを開く。
KBに掲載されているのはASPコードだが、お好みの言語で簡単に確認できる。自分の場合はPHPコードで簡単に確認できた。確かに、showModalDialogに渡されたwindowオブジェクトのopen()であれば、元ウインドウのCookieが正常に引き継がれた。
PHPサンプルコードのzip : 添付ファイル/2008/12/13/021722/kb831678_php_sample.zip
コメント