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


Posted in Javascript onAugust 08, 2014

javascript实现客户端file选择文件后img标签加载客户端图片实现图片预览。

测试浏览器:firefox6,firefox12,chrome 25.0.1364.172 m,IE6-IE10 都兼容

safari5.0.4不支持FileReader和file.files.item(0).getAsDataURL方法,暂时无解,需要上传到服务器后返回临时文件名用img标签加载,不知道后续的safari版本是否支持FileReader对象。

IE10下效果:

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

IE9下效果:

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

实现源代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="txt/html;charset=utf-8" />
<title>javascript实现IE,firefox客户端图片预览</title>
<script>
 //使用IE条件注释来判断是否IE6,通过判断userAgent不一定准确
 if (document.all) document.write('<!--[if lte IE 6]><script type="text/javascript">window.ie6= true<\/script><![endif]-->');
 // var ie6 = /msie 6/i.test(navigator.userAgent);//不推荐,有些系统的ie6 userAgent会是IE7或者IE8
 function change(picId,fileId) {
  var pic = document.getElementById(picId);
  var file = document.getElementById(fileId);
  if(window.FileReader){//chrome,firefox7+,opera,IE10,IE9,IE9也可以用滤镜来实现
   oFReader = new FileReader();
   oFReader.readAsDataURL(file.files[0]);
   oFReader.onload = function (oFREvent) {pic.src = oFREvent.target.result;};  
  }
  else if (document.all) {//IE8-
   file.select();
   var reallocalpath = document.selection.createRange().text//IE下获取实际的本地文件路径
   if (window.ie6) pic.src = reallocalpath; //IE6浏览器设置img的src为本地路径可以直接显示图片
   else { //非IE6版本的IE由于安全问题直接设置img的src无法显示本地图片,但是可以通过滤镜来实现,IE10浏览器不支持滤镜,需要用FileReader来实现,所以注意判断FileReader先
    pic.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='image',src=\"" + reallocalpath + "\")";
    pic.src = 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==';//设置img的src为base64编码的透明图片,要不会显示红xx
   }
  }
  else if (file.files) {//firefox6-
   if (file.files.item(0)) {
    url = file.files.item(0).getAsDataURL();
    pic.src = url;
   }
  }
 }
</script>
</head>
<body>
<form name="form1" enctype="multipart/form-data"><table><tr>
<td> 草图1:</td>
<td >
<input type="file" name="file1" id="file1" onchange="change('pic1','file1')">
</td>
<tr>
<td>草图浏览1:</td>
<td>
<img src="images/px.gif" id="pic1" >
</td></tr><tr>
<td> 草图2:</td>
<td >
<input type="file" name="file2" id="file2" onchange="change('pic2','file2')">
</td>
<tr>
<td>草图浏览2:</td>
<td>
<img src="images/px.gif" id="pic2" >
</td></tr>
</table>
</form>
</body>
</html>
Javascript 相关文章推荐
javascript编程起步(第六课)
Jan 10 Javascript
Javascript 八进制转义字符(8进制)
Apr 08 Javascript
js计算两个时间之间天数差的实例代码
Nov 19 Javascript
Js为表单动态添加节点内容的方法
Feb 10 Javascript
DOM操作一些常用的属性汇总
Mar 13 Javascript
JavaScript中使用Callback控制流程介绍
Mar 16 Javascript
Jquery使用小技巧汇总
Dec 29 Javascript
js注入 黑客之路必备!
Sep 14 Javascript
详解angularjs实现echart图表效果最简洁教程
Nov 29 Javascript
利用d3.js力导布局绘制资源拓扑图实例教程
Jan 08 Javascript
优雅的将ElementUI表格变身成树形表格的方法步骤
Apr 11 Javascript
vuejs中父子组件之间通信方法实例详解
Jan 17 Javascript
js调试工具console.log()方法查看js代码的执行情况
Aug 08 #Javascript
JS创建类和对象的两种不同方式
Aug 08 #Javascript
将HTML格式的String转化为HTMLElement的实现方法
Aug 07 #Javascript
jquery datatable后台封装数据示例代码
Aug 07 #Javascript
jquery对象和javascript对象即DOM对象相互转换
Aug 07 #Javascript
js判断当页面无法回退时关闭网页否则就history.go(-1)
Aug 07 #Javascript
js和jquery设置disabled属性为true使按钮失效
Aug 07 #Javascript
You might like
PHP Smarty生成EXCEL文档的代码
2008/08/23 PHP
php中var_export与var_dump的区别分析
2010/08/21 PHP
Laravel框架表单验证详解
2014/09/04 PHP
PHP+shell脚本操作Memcached和Apache Status的实例分享
2016/03/11 PHP
thinkphp5 URL和路由的功能详解与实例
2017/12/26 PHP
兼容IE和FF的js脚本代码小结(比较常用)
2010/12/06 Javascript
js解析xml字符串和xml文档实现原理及代码(针对ie与火狐)
2013/02/02 Javascript
js给页面加style无效果的解决方法
2014/01/20 Javascript
javaScript年份下拉列表框内容为当前年份及前后50年
2014/05/28 Javascript
jQuery中:gt选择器用法实例
2014/12/29 Javascript
js实现选中复选框文字变色的方法
2015/08/14 Javascript
微信小程序request出现400的问题解决办法
2017/05/23 Javascript
ES6 javascript中class类的get与set用法实例分析
2017/10/30 Javascript
vue项目上传Github预览的实现示例
2018/11/06 Javascript
基于Vue全局组件与局部组件的区别说明
2020/08/11 Javascript
详解JavaScript执行模型
2020/11/16 Javascript
Python time模块详解(常用函数实例讲解,非常好)
2014/04/24 Python
浅谈dataframe中更改列属性的方法
2018/07/10 Python
详解django中使用定时任务的方法
2018/09/27 Python
Django uwsgi Nginx 的生产环境部署详解
2019/02/02 Python
详解python中@的用法
2019/03/27 Python
Python3.x+迅雷x 自动下载高分电影的实现方法
2020/01/12 Python
python GUI库图形界面开发之PyQt5多行文本框控件QTextEdit详细使用方法实例
2020/02/28 Python
Python3使用Selenium获取session和token方法详解
2021/02/16 Python
CSS3中的元素过渡属性transition示例详解
2016/11/30 HTML / CSS
html5通过canvas实现刮刮卡效果示例分享
2014/01/27 HTML / CSS
非凡女性奢华谦虚风格:The Modist
2017/10/28 全球购物
美国Randolph太阳镜官网:美国制造的飞行员太阳镜和射击眼镜
2018/06/15 全球购物
加拿大著名的奢侈品购物网站:SSENSE(支持中文)
2020/06/25 全球购物
幼儿园教研活动方案
2014/01/19 职场文书
企业务虚会发言材料
2014/10/20 职场文书
有限公司股东合作协议书
2014/10/29 职场文书
地道战观后感500字
2015/06/04 职场文书
分析ZooKeeper分布式锁的实现
2021/06/30 Java/Android
Dubbo+zookeeper搭配分布式服务的过程详解
2022/04/03 Java/Android
Java中的Kafka为什么性能这么快及4大核心详析
2022/09/23 Java/Android