本地图片预览(支持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技巧总结
Jan 01 Javascript
Javascript中匿名函数的调用与写法实例详解(多种)
Jan 26 Javascript
Immutable 在 JavaScript 中的应用
May 02 Javascript
微信jssdk用法汇总
Jul 16 Javascript
JavaScript 值类型和引用类型的初次研究(推荐)
Jul 19 Javascript
JavaScript学习笔记之惰性函数示例详解
Aug 27 Javascript
jQuery plugin animsition使用小结
Sep 14 jQuery
bootstrap可编辑下拉框jquery.editable-select
Oct 12 jQuery
基于Require.js使用方法(总结)
Oct 26 Javascript
详解Koa中更方便简单发送响应的方式
Jul 20 Javascript
微信小程序新手教程之启动页的重要性
Mar 03 Javascript
在Vue中使用antv的示例代码
Jun 29 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新手上路(九)
2006/10/09 PHP
DedeCms模板安装/制作概述
2007/03/11 PHP
PHP中遍历stdclass object的实现代码
2011/06/09 PHP
php中filter函数验证、过滤用户输入的数据
2014/01/13 PHP
以实例全面讲解PHP中多进程编程的相关函数的使用
2015/08/18 PHP
JAVASCRIPT对象及属性
2007/02/13 Javascript
JavaScript中Math对象使用说明
2008/01/16 Javascript
基于jQuery实现的水平和垂直居中的div窗口
2011/08/08 Javascript
浅谈Javascript中匀速运动的停止条件
2014/12/19 Javascript
JavaScript对表格或元素按文本,数字或日期排序的方法
2015/05/26 Javascript
jQuery实现模拟marquee标签效果
2015/07/14 Javascript
ES6学习教程之对象的扩展详解
2017/05/02 Javascript
AngularJS 支付倒计时功能实现思路
2017/06/05 Javascript
Vue.js在数组中插入重复数据的实现代码
2017/11/17 Javascript
使用Vue完成一个简单的todolist的方法
2017/12/01 Javascript
改变vue请求过来的数据中的某一项值的方法(详解)
2018/03/08 Javascript
javascript实现小型区块链功能
2019/04/03 Javascript
JavaScript实现PC端横向轮播图
2020/02/07 Javascript
bootstrapValidator表单校验、更改状态、新增、移除校验字段的实例代码
2020/05/19 Javascript
JS实现4位随机验证码
2020/10/19 Javascript
python的一些加密方法及python 加密模块
2019/07/11 Python
Python 内置变量和函数的查看及说明介绍
2019/12/25 Python
Python数据库封装实现代码示例解析
2020/09/05 Python
html5中canvas学习笔记1-画板的尺寸与实际显示尺寸
2013/01/06 HTML / CSS
HTML5+CSS3模仿优酷视频截图功能示例
2017/01/05 HTML / CSS
Vivo俄罗斯官方在线商店:中国智能手机品牌
2019/10/04 全球购物
开水果连锁店创业计划书
2013/12/29 职场文书
写给女生的道歉信
2014/01/08 职场文书
服装电子商务创业计划书
2014/01/30 职场文书
将相和教学反思
2014/02/04 职场文书
环境科学专业求职信
2014/08/04 职场文书
2016公司年会通知范文
2015/04/25 职场文书
开会迟到检讨书范文
2015/05/06 职场文书
小平您好观后感
2015/06/09 职场文书
Python max函数中key的用法及原理解析
2021/06/26 Python
JS前端监控采集用户行为的N种姿势
2022/07/23 Javascript