兼容ie[6-9]、火狐、Chrome、opera、maxthon3、360浏览器的js本地图片预览

本文主要是介绍兼容ie[6-9]、火狐、Chrome、opera、maxthon3、360浏览器的js本地图片预览,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

html代码

<div id="divPreview">
     <img id="imgHeadPhoto" src="Images/Headphoto/noperson.jpg" style="width: 160px; height: 170px;border: solid 1px #d2e2e2;" alt="" />
</div>
<asp:FileUpload ID="fuHeadPhoto" runat="server" οnchange="PreviewImage(this,'imgHeadPhoto','divPreview')" size="20" />

将网上的js本地图片预览整合了一下,希望对大家有用,如有其他浏览器不兼容且有解决办法,请给我留言,我将及时更新本文代码。

 

javascript代码

复制代码
//js本地图片预览,兼容ie[6-9]、火狐、Chrome17+、Opera11+、Maxthon3、360浏览器
function PreviewImage(fileObj, imgPreviewId, divPreviewId) {var allowExtention = document.getElementById("hfAllowPicSuffix").value; //.jpg,.bmp,.gif,.png,允许上传文件的后缀名var extention = fileObj.value.substring(fileObj.value.lastIndexOf(".") + 1).toLowerCase(); //获取当前上传文件的扩展名var browserVersion = window.navigator.userAgent.toUpperCase();if (allowExtention.indexOf(extention) > -1) {if (fileObj.files) {//兼容chrome、火狐7+、360浏览器5.5+等,应该也兼容ie10,HTML5实现预览if (window.FileReader) {var reader = new FileReader();reader.onload = function(e) {document.getElementById(imgPreviewId).setAttribute("src", e.target.result);}reader.readAsDataURL(fileObj.files[0]);} else if (browserVersion.indexOf("SAFARI") > -1) {alert("不支持Safari浏览器6.0以下版本的图片预览!");} else {alert("不支持您当前使用的浏览器的图片预览!");}} else if (browserVersion.indexOf("MSIE") > -1) {//ie、360低版本预览if (browserVersion.indexOf("MSIE 6") > -1) {//ie6document.getElementById(imgPreviewId).setAttribute("src", fileObj.value);} else {//ie[7-9]
                fileObj.select();if (browserVersion.indexOf("MSIE 9") > -1) {//fileObj.blur(); //不加上document.selection.createRange().text在ie9会拒绝访问document.getElementById(divPreviewId).focus(); //参考http://gallop-liu.iteye.com/blog/1344778
                }var newPreview = document.getElementById(divPreviewId + "New");if (newPreview == null) {newPreview = document.createElement("div");newPreview.setAttribute("id", divPreviewId + "New");newPreview.style.width = document.getElementById(imgPreviewId).width + "px";newPreview.style.height = document.getElementById(imgPreviewId).height + "px";newPreview.style.border = "solid 1px #d2e2e2";}newPreview.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale',src='" + document.selection.createRange().text + "')";var tempDivPreview = document.getElementById(divPreviewId);tempDivPreview.parentNode.insertBefore(newPreview, tempDivPreview);tempDivPreview.style.display = "none";}} else if (browserVersion.indexOf("FIREFOX") > -1) {//firefoxvar firefoxVersion = parseFloat(browserVersion.toLowerCase().match(/firefox\/([\d.]+)/)[1]);if (firefoxVersion < 7) {//firefox7以下版本document.getElementById(imgPreviewId).setAttribute("src", fileObj.files[0].getAsDataURL());} else {//firefox7.0+                    document.getElementById(imgPreviewId).setAttribute("src", window.URL.createObjectURL(fileObj.files[0]));}} else {alert("不支持您当前使用的浏览器的图片预览!");}} else {alert("仅支持" + allowExtention + "为后缀名的文件!");fileObj.value = ""; //清空选中文件if (browserVersion.indexOf("MSIE") > -1) {fileObj.select();document.selection.clear();}fileObj.outerHTML = fileObj.outerHTML;}
}
复制代码

 

测试代码下载 测试代码js未更新,测试时将本页js复制到测试代码里面

 2013-7-2
1.更新原来newPreview.style.width =document.getElementById(imgPreviewId).style.width为document.getElementById(imgPreviewId).width+"px";

2013-7-4

1.更新兼容ie9浏览器、兼容360浏览器5.5+

 2014-4-11

1.修复上传到服务器上后,特殊情况下ie9还是拒绝访问问题问题。

fileObj.blur();修改为document.getElementById(divPreviewId).focus();

这篇关于兼容ie[6-9]、火狐、Chrome、opera、maxthon3、360浏览器的js本地图片预览的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1081142

相关文章

C#中图片如何自适应pictureBox大小

《C#中图片如何自适应pictureBox大小》文章描述了如何在C#中实现图片自适应pictureBox大小,并展示修改前后的效果,修改步骤包括两步,作者分享了个人经验,希望对大家有所帮助... 目录C#图片自适应pictureBox大小编程修改步骤总结C#图片自适应pictureBox大小上图中“z轴

Python如何使用seleniumwire接管Chrome查看控制台中参数

《Python如何使用seleniumwire接管Chrome查看控制台中参数》文章介绍了如何使用Python的seleniumwire库来接管Chrome浏览器,并通过控制台查看接口参数,本文给大家... 1、cmd打开控制台,启动谷歌并制定端口号,找不到文件的加环境变量chrome.exe --rem

使用Python将长图片分割为若干张小图片

《使用Python将长图片分割为若干张小图片》这篇文章主要为大家详细介绍了如何使用Python将长图片分割为若干张小图片,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. python需求的任务2. Python代码的实现3. 代码修改的位置4. 运行结果1. Python需求

springboot 加载本地jar到maven的实现方法

《springboot加载本地jar到maven的实现方法》如何在SpringBoot项目中加载本地jar到Maven本地仓库,使用Maven的install-file目标来实现,本文结合实例代码给... 在Spring Boothttp://www.chinasem.cn项目中,如果你想要加载一个本地的ja

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

使用JavaScript操作本地存储

《使用JavaScript操作本地存储》这篇文章主要为大家详细介绍了JavaScript中操作本地存储的相关知识,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... 目录本地存储:localStorage 和 sessionStorage基本使用方法1. localStorage

使用 Python 和 LabelMe 实现图片验证码的自动标注功能

《使用Python和LabelMe实现图片验证码的自动标注功能》文章介绍了如何使用Python和LabelMe自动标注图片验证码,主要步骤包括图像预处理、OCR识别和生成标注文件,通过结合Pa... 目录使用 python 和 LabelMe 实现图片验证码的自动标注环境准备必备工具安装依赖实现自动标注核心

使用Vue.js报错:ReferenceError: “Vue is not defined“ 的原因与解决方案

《使用Vue.js报错:ReferenceError:“Vueisnotdefined“的原因与解决方案》在前端开发中,ReferenceError:Vueisnotdefined是一个常见... 目录一、错误描述二、错误成因分析三、解决方案1. 检查 vue.js 的引入方式2. 验证 npm 安装3.

Java操作xls替换文本或图片的功能实现

《Java操作xls替换文本或图片的功能实现》这篇文章主要给大家介绍了关于Java操作xls替换文本或图片功能实现的相关资料,文中通过示例代码讲解了文件上传、文件处理和Excel文件生成,需要的朋友可... 目录准备xls模板文件:template.xls准备需要替换的图片和数据功能实现包声明与导入类声明与

Nacos客户端本地缓存和故障转移方式

《Nacos客户端本地缓存和故障转移方式》Nacos客户端在从Server获得服务时,若出现故障,会通过ServiceInfoHolder和FailoverReactor进行故障转移,ServiceI... 目录1. ServiceInfoHolder本地缓存目录2. FailoverReactorinit