我有一个由click事件触发的函数...当单击该函数时,应该从点击源自的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');
}
}
答案 0 :(得分:1)
IE8(或IE9)不支持任何文件API。对于files[iCount]
值的属性访问尝试,它会在undefined
中抛出错误。
答案 1 :(得分: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');
也就是说,它不会像this other answer中所解释的那样对您的具体情况有所帮助。
为避免混淆事件,您可以传递对象本身:
<input type="file" onchange="handleFileSelect(this);" />
然后函数参数已经是文件输入本身。 (与我上面例子中的sender
相同)