plasmasphere.net -プラズマスフィア ドットネット-
Diary
Ext JS / IEでファイルダウンロードした場合のWaitMsg
2010/02/01(Mon) 00:02
IE で Ext JS を場合の不具合っていうか IE の JavaScript エラーかよくわからんが…何か動かんかったので。
フォームコンポーネントに fileUpload: true を指定した場合の限定された場合です。
ExtJS 使わない場合でも、iFrame でファイルダウンロードして callback つけた場合に同じことが起きるんじゃなかろうか。
var form =new Ext.form.FormPanel({
fileUpload: true
});
form.getForm().submit({
waitMsg: "処理中です…"
});
この状態で、IEのダウンロードダイアログが出てきた時に waitMsg のメッセージコンポーネントが非表示になりません。
これ以降F5キーで画面を更新せざるをえなくなるっていう Async なめんなっていう状態になります。
回避するなら、IEの場合に waitMsg を表示させないようにするか、もしくはフォームコンポーネントを使うのではなく、メッセージダイアログと JS で iFrame の DOM を作って処理する方法ですが、今回は色々面倒だったのと、後者でやっても最悪Fixされない可能性があったので waitMsg を表示させない方法を取りました。
if( Ext.isIE ) {
Ext.override( Ext.form.BasicForm, {
beforeAction: Ext.emptyFn
});
}
ってやったればOK。
ダウンロードダイアログが開いた後に何でJavaScriptが実行されないのかは追っかけてないので分かりませんが、やっぱりIEは8になってもウンコーだなと思った今日この頃。
エンドユーザにとって糞なのではなく、技術者にとって糞なんだと言うこと。
ただ…
しかるべきキーワードで探せば Google さんが答えを教えてくれると思うんですが、そのキーワードが思いつかんかったから自分で結論出した。
これが本当に IE の仕様かどうかはワカラン。
ウェイトメッセージ出すほど重い処理じゃないので、特に問題無いと思ったんですが、技術者としてはダメなんじゃねとかここまで書いてから思ったけど良いわ。