Feb 07, 2007

IE6は動的にこさえたiframeへのform method postができない

備忘録です。

ファイルアップロードをAjaxでコントロールすることはセキュリティ上できませんので、そういう場合の代替として定石であるところの「見えない<iframe>を使って通信」を使ってます。

この定石、もちろんファイルアップロード以外のAjaxベースでも使われてますが、その場合の留意点として、「IE6のバグにより、createElement()で生成した<iframe>にonloadイベントハンドラを設定できない」というのがあります。これには「代わりにonreadystatechangeイベントハンドラを使う」という定石がやはりあるわけですが、今回はファイルアップロードなので、結局はフォームを使うしかないのでした。

でハマりました、悩みました。涙
どこがおかしいのかはじめはわかりませんでしたが、結局、上記onload以外にもある制限として、「IE6のバグにより、フォーム送信においては、createElement()で生成した<iframe>をtarget指定できない」ということのようです。

静的にあらかじめhtml文として<iframe>を書いておけば問題ありませんが、これにより、ファイルアップロードをJavaScriptレベルでカプセル化する野望はついえました…orz

Trackback

No Trackbacks

Track from Your Website

http://blog.izumichan.com/trackback/tb.php?id=438

Comment

No Comments

Post Your Comment


*は入力必須です。E-Mailは公開されません。