動的iframeが解決してきた

dojoというjsライブラリから動的iframeのコードを見てまねしてやったところ、Firefoxで狙ったとおりの動作が得られた。

dojoはiframeを使ったxdomain通信ライブラリなどのhack的な拡張が特徴らしいので、今回参考にしてみようと思いました。

ソースコードは以下で見れます。

iframeの生成
http://trac.dojotoolkit.org/browser/branches/1.5/dojo/io/iframe.js

iframeの生成でも使われているブラウザの判定部分
http://trac.dojotoolkit.org/browser/branches/1.5/dojo/_base/query.js

IE、webkit、firefox、operaでそれぞれ処理を変えているのが分かります。

ただいまはfirefoxで、iGoogle内での起動、iGoogle外での起動、OpensocialサポートのあるiGoogle外での起動で狙ったとおりの動作が得られました。
引き続き、他のブラウザでテストして動的iframeについてまとめていきたいと思います。

■IE6・8
○iGoogle外での起動
×iGoogle内での起動
×OpensocialサポートのあるiGoogle外での起動(ie6:srcはセットされているのにロードされていない)
IE8はpopupブロックにもあったのでactionscriptもみなおさなくちゃ。

■Chrome(Iron5.0)
○iGoogle外での起動
○iGoogle内での起動
○OpensocialサポートのあるiGoogle外での起動
ただし、リロードの部分を以下のように修正した。
if( ua.isWebKit){
     // this.iframe.location.reload();
     this.iframe.contentWindow.location.reload();
    }
this.iframe.location.reload()はきっと以前のwebkitなのか。
それともSafariとChromeのjsエンジンの違いか。分岐が必要。

■Safari4.0と3.5(Windows版)
○iGoogle外での起動
○iGoogle内での起動
○OpensocialサポートのあるiGoogle外での起動
上のChrome(Iron5.0)用の変更のまま動作。
popupが新しいWindowになったのでactionscriptの見直しが必要。

■Opera
○iGoogle外での起動
×iGoogle内での起動
×OpensocialサポートのあるiGoogle外での起動(srcはセットされているのにロードされていない。)
またdojoのコメントにもそれっぽいことがあったので、srcのセットはonloadイベント内で行うようにした。