本地图片预览(支持IE6/IE7/IE8/Firefox3)经验总结


Posted in Javascript onMarch 25, 2013

最近在Web项目开发过程中遇到的本地图片预览的需求,虽然最后因为其他原因没能使用,但是也算有些了解,整理出来。

这里我们按浏览器分,主要包括IE6,IE7/8 和Firefox3, 不包含Opera,Safari和Chrome,这三个基本上需求很小,没有研究。

总结一下就是
IE6下可以直接从file的value获取图片路径来显示预览。
IE7和IE8下通过select获取file的图片路径,再用滤镜来显示预览。
FireFox下调用file的getAsDataURL方法获取Data URI数据来显示预览。

下面是一个完整的Demo:

<html> 
<head> 
<script src="http://deepliquid.com/projects/Jcrop/js/jquery.min.js"></script> 
</head> 
<body> 
<input type="file" id="picture" name="picture" size="35" value="" onchange="setImg(this)"/> 
<div id="preview_fake" style="margin-left: 50px"> 
</div> 
<img id="preview_size_fake"/> 
<style type="text/css"> 
#preview_fake{ 
/* 该对象用于在IE下显示预览图片 
*/ 
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale); 
} 
#preview_size_fake{ 
/* 该对象只用来在IE下获得图片的原始尺寸,无其它用途 
*/ 
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=image); 
visibility:hidden; 
} 
</style> 
<script type="text/javascript"> 
function setImg(obj){ 
if( !obj.value.match( /.jpg|.gif|.png|.bmp/i ) ){ 
alert('图片格式无效!'); 
return false; 
} 
$("#preview_fake").empty(); 
var img = document.createElement("img"); 
img.setAttribute("src", ""); 
img.setAttribute("id", "preview"); 
document.getElementById("preview_fake").appendChild(img); 
if($.browser.msie){ 
if($.browser.version == 6.0){ 
$("#preview").attr("src",obj.value); 
}else{ 
var objPreview = document.getElementById('preview' ); 
var objPreviewFake = document.getElementById('preview_fake' ); 
var objPreviewSizeFake = document.getElementById('preview_size_fake' ); 
obj.select(); 
var imgSrc =document.selection.createRange().text; 
objPreviewFake.filters.item('DXImageTransform.Microsoft.AlphaImageLoader').src= imgSrc; 
objPreviewSizeFake.filters.item('DXImageTransform.Microsoft.AlphaImageLoader').src= imgSrc; 
autoSizePreview(objPreviewFake,objPreviewSizeFake.offsetWidth,objPreviewSizeFake.offsetHeight ); 
objPreview.style.display ='none'; 
} 
} 
if($.browser.mozilla){ 
$("#preview").attr("src",obj.files[0].getAsDataURL()); 
} 
if($.browser.opera){ 
alert("暂时不支持Opera浏览器"); 
} 
if($.browser.safari){ 
alert("暂时不支持Safari浏览器"); 
} 
} 
</script> 
</body> 
</html>
Javascript 相关文章推荐
jquery实现html页面 div 假分页有原理有代码
Sep 06 Javascript
SeaJS 与 RequireJS 的差异对比
Dec 08 Javascript
js实现网页右上角滑出会自动消失大幅广告的方法
Feb 27 Javascript
Angularjs使用directive自定义指令实现attribute继承的方法详解
Aug 05 Javascript
微信小程序 数据访问实例详解
Oct 08 Javascript
模板视图和AngularJS之间冲突的解决方法
Nov 22 Javascript
JavaScript数据结构之双向链表和双向循环链表的实现
Nov 28 Javascript
node.js通过axios实现网络请求的方法
Mar 05 Javascript
Vue开发环境中修改端口号的实现方法
Aug 15 Javascript
layui文件上传控件带更改后数据传值的方法
Sep 23 Javascript
vue解决花括号数据绑定不成功的问题
Oct 30 Javascript
解决vue 使用setTimeout,离开当前路由setTimeout未销毁的问题
Jul 21 Javascript
JS上传前预览图片实例
Mar 25 #Javascript
js实现杯子倒水问题自动求解程序
Mar 25 #Javascript
js实现上传图片之上传前预览图片
Mar 25 #Javascript
使用jQuery validate 验证注册表单实例演示
Mar 25 #Javascript
多个表单中如何获得这个文件上传的网址实现js代码
Mar 25 #Javascript
jquery中使用$(#form).submit()重写提交表单无效原因分析及解决
Mar 25 #Javascript
博客侧边栏模块跟随滚动条滑动固定效果的实现方法(js+jquery等)
Mar 24 #Javascript
You might like
php session 预定义数组
2009/03/16 PHP
PHP正则表达式之定界符和原子介绍
2012/10/05 PHP
php实现的短网址算法分享
2014/06/20 PHP
php的单例模式及应用场景详解
2021/02/27 PHP
JQuery 图片的展开和伸缩实例讲解
2013/04/18 Javascript
给应用部分的js代码设定一个统一的入口
2014/06/15 Javascript
Javascript数组与字典用法分析
2014/12/13 Javascript
常用DOM整理
2015/06/16 Javascript
浅谈JS之tagNaem和nodeName
2016/09/13 Javascript
jQuery为DOM动态追加事件的方法
2017/02/16 Javascript
详解angularJs指令的3种绑定策略
2017/04/13 Javascript
原生js封装添加class,删除class的实例
2017/11/06 Javascript
用vue-cli开发vue时的代理设置方法
2018/09/20 Javascript
如何解决webpack-dev-server代理常切换问题
2019/01/09 Javascript
Vue的双向数据绑定实现原理解析
2020/02/17 Javascript
一起来了解一下JavaScript的预编译(小结)
2021/03/01 Javascript
python中列表元素连接方法join用法实例
2015/04/07 Python
在Python中封装GObject模块进行图形化程序编程的教程
2015/04/14 Python
解决python3 urllib中urlopen报错的问题
2017/03/25 Python
python使用pycharm环境调用opencv库
2018/02/11 Python
python 获取指定文件夹下所有文件名称并写入列表的实例
2018/04/23 Python
Python解析、提取url关键字的实例详解
2018/12/17 Python
python线程的几种创建方式详解
2019/08/29 Python
pycharm设置当前工作目录的操作(working directory)
2020/02/14 Python
strlen的几种不同实现方法
2013/05/31 面试题
大学生简历中个人的自我评价
2013/10/06 职场文书
教育技术学专业职业规划书
2014/03/03 职场文书
对教师的评语
2014/04/28 职场文书
法学专业毕业生自荐信
2014/06/11 职场文书
信息员培训方案
2014/06/12 职场文书
三八妇女节趣味活动方案
2014/08/23 职场文书
优秀家长自荐材料
2014/08/26 职场文书
监察局领导班子四风问题整改措施思想汇报
2014/10/05 职场文书
留学推荐信怎么写
2015/03/26 职场文书
2016民族团结先进个人事迹材料
2016/02/26 职场文书
幼儿园大班教师评语
2019/06/21 职场文书