html代码:

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

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

javascript代码:

  1. //js本地图片预览,兼容ie[6-9]、火狐、Chrome17+、Opera11+、Maxthon3、360浏览器
  2. function PreviewImage(fileObj, imgPreviewId, divPreviewId) {
  3. var allowExtention = document.getElementById("hfAllowPicSuffix").value; //.jpg,.bmp,.gif,.png,允许上传文件的后缀名
  4. var extention = fileObj.value.substring(fileObj.value.lastIndexOf(".") + 1).toLowerCase(); //获取当前上传文件的扩展名
  5. var browserVersion = window.navigator.userAgent.toUpperCase();
  6. if (allowExtention.indexOf(extention) > -1) {
  7. if (fileObj.files) {//兼容chrome、火狐7+、360浏览器5.5+等,应该也兼容ie10,HTML5实现预览
  8. if (window.FileReader) {
  9. var reader = new FileReader();
  10. reader.onload = function(e) {
  11. document.getElementById(imgPreviewId).setAttribute("src", e.target.result);
  12. }
  13. reader.readAsDataURL(fileObj.files[0]);
  14. } else if (browserVersion.indexOf("SAFARI") > -1) {
  15. alert("不支持Safari浏览器6.0以下版本的图片预览!");
  16. } else {
  17. alert("不支持您当前使用的浏览器的图片预览!");
  18. }
  19. } else if (browserVersion.indexOf("MSIE") > -1) {//ie、360低版本预览
  20. if (browserVersion.indexOf("MSIE 6") > -1) {//ie6
  21. document.getElementById(imgPreviewId).setAttribute("src", fileObj.value);
  22. } else {//ie[7-9]
  23. fileObj.select();
  24. if (browserVersion.indexOf("MSIE 9") > -1) {
  25. //fileObj.blur(); //不加上document.selection.createRange().text在ie9会拒绝访问
  26. document.getElementById(divPreviewId).focus(); //参考http://gallop-liu.iteye.com/blog/1344778
  27. }
  28. var newPreview = document.getElementById(divPreviewId + "New");
  29. if (newPreview == null) {
  30. newPreview = document.createElement("div");
  31. newPreview.setAttribute("id", divPreviewId + "New");
  32. newPreview.style.width = document.getElementById(imgPreviewId).width + "px";
  33. newPreview.style.height = document.getElementById(imgPreviewId).height + "px";
  34. newPreview.style.border = "solid 1px #d2e2e2";
  35. }
  36. newPreview.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale',src='" + document.selection.createRange().text + "')";
  37. var tempDivPreview = document.getElementById(divPreviewId);
  38. tempDivPreview.parentNode.insertBefore(newPreview, tempDivPreview);
  39. tempDivPreview.style.display = "none";
  40. }
  41. } else if (browserVersion.indexOf("FIREFOX") > -1) {//firefox
  42. var firefoxVersion = parseFloat(browserVersion.toLowerCase().match(/firefox\/([\d.]+)/)[1]);
  43. if (firefoxVersion < 7) {//firefox7以下版本
  44. document.getElementById(imgPreviewId).setAttribute("src", fileObj.files[0].getAsDataURL());
  45. } else {//firefox7.0+
  46. document.getElementById(imgPreviewId).setAttribute("src", window.URL.createObjectURL(fileObj.files[0]));
  47. }
  48. } else {
  49. alert("不支持您当前使用的浏览器的图片预览!");
  50. }
  51. } else {
  52. alert("仅支持" + allowExtention + "为后缀名的文件!");
  53. fileObj.value = ""; //清空选中文件
  54. if (browserVersion.indexOf("MSIE") > -1) {
  55. fileObj.select();
  56. document.selection.clear();
  57. }
  58. fileObj.outerHTML = fileObj.outerHTML;
  59. }
  60. }

测试代码下载 测试代码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还是拒绝访问问题问题。

  1. fileObj.blur();修改为document.getElementById(divPreviewId).focus();
  2.  
  3. 转发自:http://www.cnblogs.com/slyzly/articles/2411940.html

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

  1. js本地图片预览,兼容ie[6-9]、火狐、Chrome17+、Opera11+、Maxthon3

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. js本地图片预览代码兼容所有浏览器

    html代码 <div id="divPreview" style="width: 160px; height: 170px"><img id ...

  3. 兼容最新firefox、chrome和IE的javascript图片预览实现代码

    这篇文章主要介绍了兼容最新firefox.chrome和IE的javascript图片预览实现代码,测试了浏览器firefox6.firefox12.chrome 25.0.1364.172 m.IE ...

  4. html5 图片上传,支持图片预览、压缩、及进度显示,兼容IE6+及标准浏览器

    以前写过上传组件,见 打造 html5 文件上传组件,实现进度显示及拖拽上传,兼容IE6+及其它标准浏览器,对付一般的上传没有问题,不过如果是上传图片,且需要预览的话,就力有不逮了,趁着闲暇时间,给上 ...

  5. JS复制内容到剪贴板: 兼容IE、Firefox、Chrome、Safari所有浏览器【转】

    正 文: 现在浏览器种类也越来越多,诸如 IE.Firefox.Chrome.Safari等等,因此现在要实现一个js复制内容到剪贴板的小功能就不是一件那么容易的事了. 在FLASH 9 时代,有一个 ...

  6. [转]JS根据useAgent来判断edge, ie, firefox, chrome, opera, safari 等浏览器的类型及版本

    js根据浏览器的useAgent来判断浏览器的类型 userAgent 属性是一个只读的字符串,声明了浏览器用于 HTTP 请求的用户代理头的值. JavaScript语法:navigator.use ...

  7. 前端图片预览,上传前预览,兼容IE7、8、9、10、11,Firefox,Chrome(学习到的知识)

    文章地址:http://www.cnblogs.com/rubylouvre/p/4597344.html 一.window.URL 在Chrome中,window.URL和window.webkit ...

  8. python-selenium自动化测试(火狐、谷歌、360浏览器启动)

    一.打开谷歌浏览器 import selenium from selenium import webdriver browser = webdriver.Chrome(executable_path ...

  9. type="file"实现兼容IE8本地选择图片预览

    一.HTML代码 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Uploa ...

随机推荐

  1. Windows命令行提取日期时间

    参考: http://elicecn.blog.163.com/blog/static/174017473200931910320556/ SET str="%date:~0,4%%date ...

  2. centos 单独安装PHP的mysql和mysqli扩展

    2013年11月22日 11:25:41 Linux centos 6.3 最小化安装 mysql 5.5 php 5.4 安装PHP时只是 ./configure --prefix=/**** 并没 ...

  3. eclipse字体的设置

    eclipse的默认字体太小,所以设置的大一些比较清楚,方法很简单,单击菜单栏的"Window"选择"Preferences",如下图: 然后左侧依次选择Gen ...

  4. XP下使用IIS访问asp出现无权查看网页问题的解决办法

    这是用户权限问题,因为你用的磁盘是NTFS格式. 解决方法: 一.添加用户(“Everyone”或者“IUSR_你的机器名”,如IUSR_HONG,即“Internet 来宾用户”) 二.修改用户权限 ...

  5. org.apache.catalina.session.StandardManager doLoad

    转载自:http://www.cnblogs.com/java727/p/3300613.html SEVERE: IOException while loading persisted sessio ...

  6. discuz插件开发新手入门 超详细

    作为一个新手,目前也是刚刚玩转discuz的插件功能,好东西不敢独享,就拿出来大家一起分享入门的过程.现在网上很多关于discuz的插件教程都是很简单的教程,原因可能是这个东西是商业化的东西,本着分享 ...

  7. [Linux] Linux进程PID散列表

    linux系统中每个进程由一个进程id标识,在内核中对应一个task_struct结构的进程描述符,系统中所有进程的task_struct通过链表链接在一起,在内核中,经常需要通过进程id来获取进程描 ...

  8. 字串变换(codevs 1099)

    题目描述 Description 已知有两个字串 A$, B$ 及一组字串变换的规则(至多6个规则): A1$ -> B1$ A2$ -> B2$ 规则的含义为:在 A$中的子串 A1$ ...

  9. Mysql查询比较

    创建一个表: article,书编码:dealer,书店:price ,书的价格. 导入一些数据: INSERT INTO shop VALUES (1,'A',3.45),(1,'B',3.99), ...

  10. Redis笔记(二)Redis的部署和启动

    Linux下Redis的部署和启动 下载安装介质 Redis官网地址:http://www.redis.io/目前最新版本是redis-3.0.3. 可以访问 http://download.redi ...