本地图片预览(支持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 相关文章推荐
csdn 博客的css样式 v3
Feb 24 Javascript
图标线性回归斜着移动到指定的位置
Aug 16 Javascript
浅谈Javascript数组的使用
Jul 29 Javascript
jquery插件Jplayer使用方法简析
Apr 22 Javascript
jQuery获取元素父节点的方法
Jun 21 Javascript
canvas实现手机端用来上传用户头像的代码
Oct 20 Javascript
利用iscroll4实现轮播图效果实例代码
Jan 11 Javascript
用Vue-cli搭建的项目中引入css报错的原因分析
Jul 20 Javascript
jQuery实现监听下拉框选中内容发生改变操作示例
Jul 13 jQuery
vue.js的双向数据绑定Object.defineProperty方法的神奇之处
Jan 18 Javascript
浅谈React Native 传参的几种方式(小结)
May 21 Javascript
vue.js循环radio的实例
Nov 07 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在字符串中查找另一个字符串
2008/11/19 PHP
基于PHP5魔术常量与魔术方法的详解
2013/06/13 PHP
分享php代码将360浏览器导出的favdb的sqlite数据库文件转换为html
2015/12/09 PHP
搜索附近的人PHP实现代码
2018/02/11 PHP
PHP时间日期增减操作示例【date strtotime实现加一天、加一月等操作】
2018/12/21 PHP
JavaScript入门学习书籍推荐
2008/06/12 Javascript
js函数的延迟加载实现代码
2012/10/11 Javascript
HTML长文本截取含有HTML代码同样适用的两种方法
2013/07/31 Javascript
JS JSON对象转为字符串的简单实现方法
2013/11/18 Javascript
js控制网页背景音乐播放与停止的方法
2015/02/06 Javascript
用JavaScript实现PHP的urlencode与urldecode函数
2015/08/13 Javascript
Javascript之面向对象--方法
2016/12/02 Javascript
基于Vue实例生命周期(全面解析)
2017/08/16 Javascript
JavaScript实现封闭区域布尔运算的示例代码
2018/06/25 Javascript
layui 对弹窗 form表单赋值的实现方法
2019/09/04 Javascript
[01:02:09]Liquid vs TNC 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21
2020/07/19 DOTA
python处理PHP数组文本文件实例
2014/09/18 Python
Python爬取三国演义的实现方法
2016/09/12 Python
Python3.5面向对象程序设计之类的继承和多态详解
2019/04/24 Python
用django设置session过期时间的方法解析
2019/08/05 Python
python用类实现文章敏感词的过滤方法示例
2019/10/27 Python
如何在mac环境中用python处理protobuf
2019/12/25 Python
Python selenium爬虫实现定时任务过程解析
2020/06/08 Python
HTML5+CSS3实例 :canvas 模拟实现电子彩票刮刮乐代码
2016/12/30 HTML / CSS
会走动的图形html5时钟示例
2014/04/27 HTML / CSS
俄罗斯游戏商店:Buka
2020/03/01 全球购物
宏碁西班牙官网:Acer西班牙
2021/01/08 全球购物
红旗团支部事迹材料
2014/01/27 职场文书
幼儿园教学随笔感言
2014/02/23 职场文书
乡镇消防工作实施方案
2014/03/27 职场文书
《花瓣飘香》教学反思
2014/04/15 职场文书
优秀教师先进材料
2014/12/16 职场文书
党建工作汇报材料
2014/12/24 职场文书
合作意向协议书
2015/01/29 职场文书
2015年教师学期工作总结
2015/04/30 职场文书
纯 CSS 自定义多行省略的问题(从原理到实现)
2021/11/11 HTML / CSS