问题描述:使用el-upload 在IE10浏览器下删除文件,再上传同一份文件,无法显示,甚至无法触发onchange事件。
原因:
使用el-upload 组件选择上传文件后,
this.$refs.upload.$el.getElementsByTagName("input")[0].value 是文件的路径,会看到文件名。
chorme里的表现是每次onChange,或onRemove 这个属性都会是当前操作文件的路径信息,但是Chrome不会因为当前上传文件的路径信息和前一个一致就不触发onChange事件,但是IE10 会。
解决:
需要每次上传之前手动清空value值(多个文件同时上传时清空前一个value值不会影响最后要上传的整体的this.$refs.upload.fileList)。
而且IE还不能直接令value=null,只能建立父元素form元素,利用form元素的reset() 重置,再插回原来的位置。附上代码:
let isIE10 = false;
if (window.navigator.userAgent.indexOf("MSIE") >= 1) { // 判断ie10以及以下
isIE10 = true;
}
let ele = this.$refs.upload.$el.getElementsByTagName("input")[0];
if (isIE10) {
let form = document.createElement("form");
let beforInput = ele.nextSibling;
let parentInput = ele.parentNode;
form.appendChild(ele);
form.reset();
parentInput.insertBefore(ele, beforInput);
} else {
ele.value = null;
}
参考大佬博客: https://blog.csdn.net/li_yunsong/article/details/104015953
网友评论