「[IE] Input type = file 属性の入力フォームにて submit を行っても Web サーバーから反応がない」の回避方法

IE6 (XP SP2)以降からの仕様で、

[IE] Input type = file 属性の入力フォームにて submit を行っても Web サーバーから反応がない

http://support.microsoft.com/default.aspx?scid=kb;ja;890981

というのがあり、

存在しないファイル名や、相対パスを入力した状態でsubmitを行うとJavaScriptエラーになる。

一度JavaScriptエラーになると、ポストバックができなくなるので、困ってしまう。

そんなとき、通常、submitをtry~catchで囲めば回避できるのだが、

ASP.NETの場合、クライアント側のPostBack関数内でsubmitを行っている関係上、難しい。(というか、その方法は無理である。)

では、どう回避するのかと言うと・・・

window.onerrorイベントに、回避するためのfunctionを設定する。

window.onerror = function(Message,FileName,RowNo)
{
alert(Message + 'n' + FileName + 'n行番号:' + RowNo);
}

といった感じである。

これでとりあえず、JavaScriptエラーは回避される。

今回の場合は”アクセスが拒否されました。”というエラーメッセージが出るので、

それをハンドリングして違うメッセージを出力しても良いかもしれない。

Share