兼容最新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 相关文章推荐
js的表单操作 简单计算器
Dec 29 Javascript
JS特殊函数(Function()构造函数、函数直接量)区别介绍
May 19 Javascript
node.js中的fs.statSync方法使用说明
Dec 16 Javascript
jQuery选择器用法实例详解
Dec 17 Javascript
jquery实现列表上下移动功能
Feb 25 Javascript
jQuery Easyui 验证两次密码输入是否相等
May 13 Javascript
Bootstrap php制作动态分页标签
Dec 23 Javascript
Map.vue基于百度地图组件重构笔记分享
Apr 17 Javascript
jQuery的时间datetime控件在AngularJs中的使用实例(分享)
Aug 17 jQuery
使用use注册Vue全局组件和全局指令的方法
Mar 08 Javascript
微信小程序Flex布局用法深入浅出分析
Apr 25 Javascript
js获取图片的base64编码并压缩
Dec 05 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 strstr查找字符串中是否包含某些字符的查找函数
2010/06/03 PHP
解析Win7 XAMPP apache无法启动的问题
2013/06/26 PHP
md5 16位二进制与32位字符串相互转换示例
2013/12/30 PHP
Yii框架上传图片用法总结
2016/03/28 PHP
php session_decode函数用法讲解
2019/05/26 PHP
Thinkphp集成抖音SDK的实现方法
2020/04/28 PHP
Javascript 继承机制的实现
2009/08/12 Javascript
JavaScript中的this关键字介绍与使用实例
2013/06/21 Javascript
jquery中animate动画积累的解决方法
2013/10/05 Javascript
js 获取页面高度和宽度兼容 ie firefox chrome等
2014/05/14 Javascript
javascript消除window.close()的提示窗口
2015/05/20 Javascript
JS选中checkbox后获取table内一行TD所有数据的方法
2015/07/01 Javascript
javascript 应用小技巧方法汇总
2015/07/05 Javascript
js中substr,substring,indexOf,lastIndexOf,split,replace的用法详解
2015/11/09 Javascript
Javascript基础之数组的使用
2016/05/13 Javascript
javascript 中select框触发事件过程的分析
2017/08/01 Javascript
webstorm中vue语法的支持详解
2018/05/09 Javascript
使用p5.js临摹动态图片
2019/11/04 Javascript
全面解析JavaScript Module模式
2020/07/24 Javascript
如何使用JavaScript实现无缝滚动自动播放轮播图效果
2020/08/20 Javascript
python获取豆瓣电影简介代码分享
2014/01/16 Python
TensorFlow2.0:张量的合并与分割实例
2020/01/19 Python
Python内置函数及功能简介汇总
2020/10/13 Python
利用CSS3伪元素实现逐渐发光的方格边框
2017/05/07 HTML / CSS
HTML5 Canvas 旋转风车绘制
2017/08/18 HTML / CSS
茵宝(Umbro)英国官方商店:英国足球服装生产商
2016/12/29 全球购物
美国宠物护理专家:Revival Animal Health
2020/01/05 全球购物
护士自荐信怎么写
2013/10/18 职场文书
毕业生教师求职信
2013/10/20 职场文书
千元咖啡店的创业计划书范文
2013/12/29 职场文书
打架检讨书100字
2014/01/08 职场文书
采购经理岗位职责
2014/02/16 职场文书
丧事答谢词
2015/01/05 职场文书
2017元旦、春节期间廉洁自律承诺书
2016/03/25 职场文书
MySQL之高可用集群部署及故障切换实现
2021/04/22 MySQL
三星 3nm 芯片将于第二季度开始量产
2022/04/29 数码科技