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。最迟files[iCount]对 value 的属性访问尝试将引发错误。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 回答