兼容最新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函数作用域学习示例(js作用域)
Jan 13 Javascript
改变隐藏的input中value值的方法
Mar 19 Javascript
jQuery中fadeOut()方法用法实例
Dec 24 Javascript
javascript判断并获取注册表中可信任站点的方法
Jun 01 Javascript
javascript动态添加checkbox复选框的方法
Dec 23 Javascript
jquery zTree异步加载简单实例讲解
Feb 25 Javascript
完美实现js拖拽效果 return false用法详解
Jul 28 Javascript
JS时间控制实现动态效果的实例讲解
Jul 31 Javascript
Vue2.0系列之过滤器的使用
Mar 01 Javascript
js动态引入的四种方法
May 05 Javascript
vue 父组件给子组件传值子组件给父组件传值的实例代码
Apr 15 Javascript
vue实现员工信息录入功能
Jun 11 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
QueryPath PHP 中的jQuery
2010/04/11 PHP
php eval函数用法总结
2012/10/31 PHP
php版微信公众平台入门教程之开发者认证的方法
2016/09/26 PHP
PHP递归的三种常用方式
2019/02/28 PHP
Prototype Date对象 学习
2009/07/12 Javascript
jquery 模拟雅虎首页的点击对话框效果
2010/04/11 Javascript
理解Javascript_14_函数形式参数与arguments
2010/10/20 Javascript
15条JavaScript最佳实践小结
2013/08/09 Javascript
jquery基础教程之数组使用详解
2014/03/10 Javascript
jQuery+PHP+MySQL实现无限级联下拉框效果
2016/02/19 Javascript
jquery树形菜单效果的简单实例
2016/06/06 Javascript
实现React单页应用的方法详解
2016/08/02 Javascript
d3.js实现简单的网络拓扑图实例代码
2016/11/06 Javascript
实战node静态文件服务器的示例代码
2018/03/08 Javascript
vue.js 实现输入框动态添加功能
2018/06/25 Javascript
vue实现的请求服务器端API接口示例
2019/05/25 Javascript
[53:38]OG vs LGD 2018国际邀请赛淘汰赛BO3 第三场 8.26
2018/08/30 DOTA
python excel使用xlutils类库实现追加写功能的方法
2018/05/02 Python
Python http接口自动化测试框架实现方法示例
2018/12/06 Python
PyQt5中多线程模块QThread使用方法的实现
2020/01/31 Python
pycharm运行程序时看不到任何结果显示的解决
2020/02/21 Python
总结Pyinstaller的坑及终极解决方法(小结)
2020/09/21 Python
Python xlrd/xlwt 创建excel文件及常用操作
2020/09/24 Python
Python tkinter之ComboBox(下拉框)的使用简介
2021/02/05 Python
欧缇丽英国官方网站:Caudalie英国
2016/08/17 全球购物
雅诗兰黛澳大利亚官网:Estée Lauder澳大利亚
2019/05/31 全球购物
shell程序如何生命变量?shell变量是弱变量吗?
2014/11/10 面试题
外语学院毕业生的自我鉴定
2013/11/28 职场文书
大学系主任推荐信范文
2013/12/24 职场文书
年度优秀员工获奖感言
2014/08/15 职场文书
商场促销活动策划方案
2014/08/18 职场文书
基层党员四风问题自我剖析材料
2014/09/29 职场文书
迁户口计划生育证明
2014/10/19 职场文书
Java Socket实现Redis客户端的详细说明
2021/05/26 Redis
「睡美人」爱洛公主粘土人开订
2022/03/22 日漫
Python中re模块的元字符使用小结
2022/04/07 Python