兼容最新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 相关文章推荐
jquery随机展示头像代码
Dec 21 Javascript
让页面上两个div中的滚动条(滑块)同步运动示例
Aug 07 Javascript
JS控制日期显示的小例子
Nov 23 Javascript
ExtJS4中的requires使用方法示例介绍
Dec 03 Javascript
javascript的动态加载、缓存、更新以及复用(一)
Jun 09 Javascript
js css 实现遮罩层覆盖其他页面元素附图
Sep 22 Javascript
使用Chart.js图表库制作漂亮的响应式表单
Oct 28 Javascript
AngularJS中transclude用法详解
Nov 03 Javascript
Bootstrap Search Suggest使用例子
Dec 21 Javascript
Vue实现点击后文字变色切换方法
Feb 11 Javascript
vue自定义指令之面板拖拽的实现
Apr 14 Javascript
vue组件vue-esign实现电子签名
Apr 21 Vue.js
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数组传递是值传递而非引用传递概念纠正
2013/01/31 PHP
shell脚本作为保证PHP脚本不挂掉的守护进程实例分享
2013/07/15 PHP
ThinkPHP水印功能实现修复PNG透明水印并增加JPEG图片质量可调整
2014/11/05 PHP
PHP生成指定随机字符串的简单实现方法
2015/04/01 PHP
PHP图像处理类库MagickWand用法实例分析
2015/05/21 PHP
简单谈谈PHP vs Node.js
2015/07/17 PHP
PHP sleep()函数, usleep()函数
2016/08/25 PHP
一次因composer错误使用引发的问题与解决
2019/03/06 PHP
laravel 解决路由除了根目录其他都404的问题
2019/10/18 PHP
在jQuery 1.5中使用deferred对象的代码(翻译)
2011/03/10 Javascript
JQuery之拖拽插件实现代码
2011/04/14 Javascript
js jq 单击和双击区分示例介绍
2013/11/05 Javascript
修改Jquery Dialog 位置的实现方法
2016/08/26 Javascript
js表单登陆验证示例
2016/10/19 Javascript
JavaScript数组_动力节点Java学院整理
2017/06/26 Javascript
ES6解构赋值的功能与用途实例分析
2017/10/31 Javascript
详解Vite的新体验
2021/02/22 Javascript
Python实现处理管道的方法
2015/06/04 Python
python判断字符串编码的简单实现方法(使用chardet)
2016/07/01 Python
解决Python列表字符不区分大小写的问题
2019/12/19 Python
Python模块的制作方法实例分析
2019/12/21 Python
详解Python实现进度条的4种方式
2020/01/15 Python
使用Tensorflow实现可视化中间层和卷积层
2020/01/24 Python
Python交互环境下打印和输入函数的实例内容
2020/02/16 Python
python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
2020/04/08 Python
python 删除excel表格重复行,数据预处理操作
2020/07/06 Python
Python读取多列数据以及用matplotlib制作图表方法实例
2020/09/23 Python
使用python将微信image下.dat文件解密为.png的方法
2020/11/30 Python
淘宝店策划方案
2014/06/07 职场文书
2014年师德师风自我剖析材料
2014/09/27 职场文书
群众路线教育实践活动剖析材料
2014/09/30 职场文书
幼儿园教师安全责任书
2015/05/08 职场文书
红楼梦读书笔记
2015/06/25 职场文书
曾国藩励志经典名言37句,蕴含哲理
2019/10/14 职场文书
python实现网络五子棋
2021/04/11 Python
从QQtabBar看css命名规范BEM的详细介绍
2021/08/07 HTML / CSS