兼容最新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 相关文章推荐
基于json的jquery地区联动效果代码
Jul 06 Javascript
JS实现淘宝幻灯片效果的实现方法
Mar 22 Javascript
jQuery学习笔记之jQuery动画效果
Sep 09 Javascript
javascript引用类型指针的工作方式
Apr 13 Javascript
jQuery代码性能优化的10种方法
Jun 21 Javascript
js的各种排序算法实现(总结)
Jul 23 Javascript
基于Bootstrap的网页设计实例
Mar 01 Javascript
vue实现全选和反选功能
Aug 31 Javascript
bootstrap select下拉搜索插件使用方法详解
Nov 23 Javascript
不得不知的ES6小技巧
Jul 28 Javascript
利用Vconsole和Fillder进行移动端抓包调试方法
Mar 05 Javascript
arctext.js实现文字平滑弯曲弧形效果的插件
May 13 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去除重复字的实现代码
2011/09/16 PHP
php array_walk_recursive 使用自定的函数处理数组中的每一个元素
2016/11/16 PHP
CI(CodeIgniter)框架实现图片上传的方法
2017/03/24 PHP
doctype后如何获得body.clientHeight的方法
2007/07/11 Javascript
浅析javascript中function 的 length 属性
2014/05/27 Javascript
JavaScript定时显示广告代码分享
2015/03/02 Javascript
javascript实现检验的各种规则
2015/07/31 Javascript
JS实现漂亮的窗口拖拽效果(可改变大小、最大化、最小化、关闭)
2015/10/10 Javascript
ion content 滚动到底部会遮住一部分视图的快速解决方法
2016/09/06 Javascript
js改变html的原有内容实现方法
2016/10/05 Javascript
原生JS实现导航下拉菜单效果
2020/11/25 Javascript
微信小程序 开发之全局配置
2017/05/05 Javascript
js随机生成一个验证码
2017/06/01 Javascript
十分钟教你上手ES2020新特性
2020/02/12 Javascript
javascript实现拖拽碰撞检测
2020/03/12 Javascript
Python with用法实例
2015/04/14 Python
详解Python中列表和元祖的使用方法
2015/04/25 Python
Python中asyncio与aiohttp入门教程
2018/10/16 Python
python函数的作用域及关键字详解
2019/08/20 Python
python入门之井字棋小游戏
2020/03/05 Python
python3让print输出不换行的方法
2020/08/24 Python
Python‘==‘ 及 ‘is‘相关原理解析
2020/09/05 Python
CSS3 Calc实现滚动条出现页面不跳动问题
2017/09/14 HTML / CSS
LN-CC日本:高端男装和女装的奢侈时尚目的地
2019/09/01 全球购物
纯净、自信、100%的羊绒服装:360Cashmere
2021/02/20 全球购物
自动化专业个人求职信范文
2013/12/30 职场文书
教师节商场活动方案
2014/02/13 职场文书
低碳生活的宣传标语
2014/06/23 职场文书
最新离婚协议书范本
2014/08/19 职场文书
纪念九一八事变演讲稿:牢记九一八,屈辱怎能忘
2014/09/14 职场文书
领导班子“四风问题”“整改方案
2014/10/02 职场文书
2014年精神文明工作总结
2014/12/23 职场文书
颐和园的导游词
2015/01/30 职场文书
2015年学校管理工作总结
2015/07/20 职场文书
中秋节主题班会
2015/08/14 职场文书
vue css 相对路径导入问题级踩坑记录
2022/06/05 Vue.js