IE8でjquery fileuploadでTypeError アクセス拒否な感じのアレやソレ
マジドハマりしましたよ・・・。
Ajaxでファイルをアップロードしようとする時に、IE9以下はXHR Lv2に対応してないので、IFRAMEの中にフォーム生成してうんたらかんたらする必要があります。
で、jQuery File Upload Pluginとか使うとその辺良いようにやってくれるんですが、やってくれるはずなんですが、何故か送信してくれない事案が発生。
ソース追ってくと、IFRAME内のform.submit()
(formはjQueryオブジェクト)で止まってるっぽ。なんじゃこりゃ。
同じソースでChromeとかは問題なく動くんでIE8の何かにぶちあたったわけですが、結論から言いますと、<input type="file">
がdisplay:none;
だったのがダメっぽいです。
今回は、デザインされたボタンをクリックすると、display:none;
な$file = $('input[type="file"]')
を$file.trigger('click')
な感じでファイル選択ダイアログが開き、最終的にそれをjQuery File Uploadに渡してPOSTしてたんですが、これだと$file
がhiddenな感じなので、IE8の(わけわかんない)セキュリティによりsubmit()
が動作せず(TypeError Access Deniedとかアクセス拒否とかなエラー)、jQuery File Uploadが正常に動作できなかったというオチでした。
なので、IE8の時は<input type="file">
をdisplay: none;
にしないようにしないと、無駄にハマるようでした。
IE駆逐されればいいのに(^q^)