在IE9中,需要上传两次才会得到预览的图片;
解决这个问题需要用setInterval ,不停地去尝试获取这个值,什么时候获得到了,就停下来执行自己的业务
function imgPreview(file) { var prevDiv = document.getElementById('preview'); var timer = setInterval(function(){ if (file.files && file.files[0]) { var reader = new FileReader(); reader.onload = function(evt){ prevDiv.innerHTML = '<img src="' + evt.target.result + '" />'; } reader.readAsDataURL(file.files[0]); } else { var file_upl = document.getElementById('file_upl'); file_upl.select(); var realpath = document.selection.createRange().text; prevDiv.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale',src="" + realpath + "")"; } }, 100);
html:
<div class="col-md-12"> <div id="preview"></div> </div> <div class="face-view-updata mt10 ml8 col-md-12"> <a href="javascript:;" class="file">上传图片 <input type="file" ngf-select="onFileSelect($file)" id="file_upl"onchange="imgPreview(this)" accept="image/gif, image/jpeg,image/jpg,image/png,image/svg"> </a> </div>