本地图片预览(支持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 相关文章推荐
理解Javascript_02_理解undefined和null
Oct 11 Javascript
基于node.js的快速开发透明代理
Dec 25 Javascript
html向js方法传递参数具体实现
Aug 08 Javascript
jQuery实现类似滑动门切换效果的层切换
Sep 23 Javascript
js hover 定时器(实例代码)
Nov 12 Javascript
JavaScript实现按照指定长度为数字前面补零输出的方法
Mar 19 Javascript
jQuery源码分析之sizzle选择器详解
Feb 13 Javascript
React Native实现地址挑选器功能
Oct 24 Javascript
深入理解JS的事件绑定、事件流模型
May 13 Javascript
详解如何解决Vue和vue-template-compiler版本之间的问题
Sep 17 Javascript
Vue常用的几个指令附完整案例
Nov 06 Javascript
Vue组件生命周期运行原理解析
Nov 25 Vue.js
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备份MYSQL数据的多种方法
2014/01/15 PHP
thinkphp的c方法使用示例
2014/02/24 PHP
yiic命令时提示“php.exe”不是内部或外部命令的解决方法
2014/12/18 PHP
给WordPress的编辑后台添加提示框的代码实例分享
2015/12/25 PHP
PHP基于GD库的图像处理方法小结
2016/09/27 PHP
jQuery让控件左右移动的三种实现方法
2013/09/08 Javascript
jquery 实现两级导航菜单附效果图
2014/03/07 Javascript
js中直接声明一个对象的方法
2014/08/10 Javascript
JavaScript jQuery 中定义数组与操作及jquery数组操作
2015/12/18 Javascript
快速掌握Node.js环境的安装与运行方法
2016/02/16 Javascript
js阻止浏览器默认行为的简单实例
2016/05/15 Javascript
Vue.js每天必学之表单控件绑定
2016/09/05 Javascript
使用BootStrap进行轮播图的制作
2017/01/06 Javascript
微信小程序 基础知识css样式media标签
2017/02/15 Javascript
详解webpack+es6+angular1.x项目构建
2017/05/02 Javascript
select获取下拉框的值 下拉框默认选中方法
2018/02/28 Javascript
常用的 JS 排序算法 整理版
2018/04/05 Javascript
js实现搜索栏效果
2018/11/16 Javascript
vue 表单输入框不支持focus及blur事件的解决方案
2020/11/17 Vue.js
Taro小程序自定义顶部导航栏功能的实现
2020/12/17 Javascript
Python中的zip函数使用示例
2015/01/29 Python
python实现汉诺塔算法
2021/03/01 Python
Django框架视图层URL映射与反向解析实例分析
2019/07/29 Python
加拿大建筑和装修专家:Reno-Depot
2017/12/21 全球购物
美国最古老的精致书写工具制造商:A.T. Cross(高仕)
2018/01/30 全球购物
德国童装购物网站:NICKI´S.com
2018/04/20 全球购物
银行职业规划书范文
2013/12/28 职场文书
校园安全广播稿
2014/02/08 职场文书
委托书范本
2014/09/13 职场文书
四风个人对照检查材料思想汇报
2014/09/25 职场文书
2014年财务个人工作总结
2014/12/08 职场文书
素质拓展训练感想
2015/08/07 职场文书
三严三实·严以律己心得体会
2016/01/13 职场文书
奶茶店的创业计划书该怎么写?
2019/07/15 职场文书
php TP5框架生成二维码链接
2021/04/01 PHP
mysql如何能有效防止删库跑路
2021/10/05 MySQL