[JavaScript] FormDataの使えないIE8やIE9での代替策
FormData があると Ajax でファイルアップロードできるようになって大変便利なのですが、困るのが IE8 と IE9 の対応です。 IE10 からは FormData が使えますが、未だに IE8 の要求は来ます。 かつての IE6 のポジションを受け継いでいる臭が漂っています。
諦めて POST で画面リロードするところでしたが、ちゃんと調べて見ると代替策がありました。 使うのは POST ですが、見せ方としては非同期通信っぽく動きます。 サンプルコードは載せませんが、要点を箇条書きにしますので、参考にしてください。
- 親ページに iframe を配置して見えないようにします(display:none だと Safari でまずいみたいなので、横幅&縦幅をゼロにします)
- フォームのターゲット要素(target="<iframe名>")で、配置した iframe を指定します
- サーバー側で POST を受け取ったら、JavaScript で親ページの関数を呼んで通知するようにします
- 親ページでは関数が呼ばれたら、アップロード完了などのメッセージを提供できます
0 件のコメント