0

クリックイベントによってトリガーされる関数があります...クリックすると、関数はクリックが発生したdomオブジェクトから情報を取得する必要があります。これはすべてFirefoxで正常に機能しますが、IE8ではアラートを通過しません3.

 function handleFileSelect(docEventTrigger) {        
    alert('1');
    if($('#tblListDocs tr input[value!=""]').length>0){
        alert('2');
        updateClicked(instanceID);
    }else{         
        alert('3');
        var docName, docVersion, docDate, docAuthor, formHTML, actionText, docActions, docResults, frmTarget, docRowCount;
        var files = docEventTrigger.target.files;  
        alert('4');    
            for (var iCount = 0, f; f = files[iCount]; iCount++) {
              alert('5');
                 STUFF HAPPENS HERE      
                 document.forms["frmUploadDoc"].submit();
              alert('6');       
    }
 }
4

2 に答える 2

1

IE8 (または IE9) はファイル API をサポートしていません。遅くとも value でfiles[iCount]プロパティ アクセスを試行すると、エラーがスローされます。undefined

于 2013-01-15T10:47:38.020 に答える
0

イベントオブジェクトのtarget属性はクロスブラウザではありません。IE の場合は、srcElement.

コードをクロス ブラウザーにするには、定義されているいずれかを取得します。

alert('3');
var sender, docName, docVersion, docDate, docAuthor, formHTML, actionText, docActions, docResults, frmTarget, docRowCount;
sender = docEventTrigger.target || docEventTrigger.srcElement;
var files = sender.files;  
alert('4');   

とはいえ、この他の回答で説明されているように、特定のケースには役立ちません。

イベントをいじる必要がないように、オブジェクト自体を渡すことができます。

<input type="file" onchange="handleFileSelect(this);" />

その場合、関数パラメーターはすでにファイル入力自体になります。(sender上記の例と同じ)

于 2013-01-15T10:52:14.440 に答える