小弟使用IE滤镜写了一个图片上传预览的js,但是后出现了图片上有破图标志。请问可能是和原因?附上代码
- JScript code
function setImagePreview(){ var docObj=document.getElementById("filename"); if(docObj.files && docObj.files[0]){ //火狐下,直接设img属性 jQuery("img").attr("style","display:block"); jQuery("#cropbox").attr("width","240"); jQuery("#cropbox").attr("height","180"); //火狐7以上版本不能用上面的getAsDataURL()方式获取,需要一下方式 jQuery("img").attr("src",window.URL.createObjectURL(docObj.files[0])); jQuery("#p").val(imgSrc); }else{ //IE下,使用滤镜 docObj.select(); var imgSrc = document.selection.createRange().text; var localImagId = document.getElementById("cropbox"); var localImag120 = document.getElementById("img100"); //必须设置初始大小 localImagId.style.display = "block"; localImag120.style.display = "block"; localImagId.style.width = "240px"; localImagId.style.height = "180px"; //图片异常的捕捉,防止用户修改后缀来伪造图片 try{ localImagId.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)"; localImagId.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgSrc; localImag120.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)"; localImag120.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgSrc; jQuery("#p").val(imgSrc); }catch(e){ alert("您上传的图片格式不正确,请重新选择!"); return false; } //alert(imgSrc); //jQuery("img").attr("style","display:block"); //jQuery("#cropbox").attr("width","240"); //jQuery("#cropbox").attr("height","180"); //jQuery("img").attr("src",imgSrc); //jQuery("#p").val(imgSrc); document.selection.empty(); } }
------解决方案--------------------
使用的浏览器是IE8吗?在IE8上,如果不修改客户端,是无法实现你的这个功能的。这也就是为什么各大网站已经不用client图像回显的原因。而改用服务器端回显。