IE 6/7 で文書間通信を実現するための一案 ― 2011年12月08日 23時32分
HTML5-WEST.jp 飲み会 UST というのがあるそうで、「参戦希望者募集」とお誘いを受けたのですが、「参戦」というからには何かしら戦の準備を整えねばなるまいと、以前から考えていたことを夜なべして実装しました。
いわゆる HTML5 の文書間通信、window.postMessage()
を IE 6/7 でどう再現するかという話で、about:blank
を指す隠しフレームを二つ用い、window.name
を介することで双方向の通信を実現しています。
どうも IE での about:blank
は、その空白ページを読み込ませた文書の生成元を継承するらしく、たとえば http://example.org/
から location.href = 'about:blank';
を実行すれば http://example.org
を生成元とする about:blank
になります (少なくともそのように見えます)。これを利用し、一つのフレームに二つの文書から交互に about:blank
を読み込ませあうことで、そのフレームの window.name
を両文書で共有できるという仕組みです。
about:blank
を読み込ませるのに location.reload()
を使えば履歴に余分な項目を残すこともありませんし、フラグメント識別子を使った場合と違ってデータ量にもだいぶ余裕が出ます。
コメント
トラックバック
このエントリのトラックバックURL: http://nanto.asablo.jp/blog/2011/12/08/6237308/tb
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※投稿には管理者が設定した質問に答える必要があります。