本地图片预览(支持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 相关文章推荐
ext监听事件方法[初级篇]
Apr 27 Javascript
jQuery 三击事件实现代码
Sep 11 Javascript
js简单实现交换Li的值
May 22 Javascript
javascript实现控制浏览器全屏
Mar 30 Javascript
浅谈javascript中的事件冒泡和事件捕获
Dec 28 Javascript
ES6中Generator与异步操作实例分析
Mar 31 Javascript
Vue路由对象属性 .meta $route.matched详解
Nov 04 Javascript
jquery 插件重新绑定的处理方法分析
Nov 23 jQuery
vue 路由守卫(导航守卫)及其具体使用
Feb 25 Javascript
JavaScript console的使用方法实例分析
Apr 28 Javascript
vue 实现element-ui中的加载中状态
Nov 11 Javascript
vue3自定义dialog、modal组件的方法
Jan 04 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连接字符集的方法
2011/01/02 PHP
如何获知PHP程序占用多少内存(memory_get_usage)
2012/09/23 PHP
php smarty模板引擎的6个小技巧
2014/04/24 PHP
php中Array2xml类实现数组转化成XML实例
2014/12/08 PHP
Yii2实现多域名跨域同步登录退出
2017/02/04 PHP
PHP实现非阻塞模式的方法分析
2018/07/26 PHP
PHP实现简单日历类编写
2020/08/28 PHP
如何在Web页面上直接打开、编辑、创建Office文档
2007/03/12 Javascript
javascript学习笔记(七) js函数介绍
2012/06/19 Javascript
javascript设置和获取cookie的方法实例详解
2016/01/05 Javascript
分离与继承的思想实现图片上传后的预览功能:ImageUploadView
2016/04/07 Javascript
JS+CSS3实现超炫的散列画廊特效
2016/07/16 Javascript
AngularJs Understanding the Model Component
2016/09/02 Javascript
轻松掌握JavaScript状态模式
2016/09/07 Javascript
利用jquery禁止外层滚动条的滚动
2017/01/05 Javascript
BootStrap3中模态对话框的使用
2017/01/06 Javascript
用Webpack构建Vue项目的实践
2017/11/07 Javascript
Vue中如何实现proxy代理
2018/04/20 Javascript
nodejs基础之buffer缓冲区用法分析
2018/12/26 NodeJs
Jquery的autocomplete插件用法及参数讲解
2019/03/12 jQuery
详解微信小程序之一键复制到剪切板
2019/04/24 Javascript
JS通过识别id、value值对checkbox设置选中状态
2020/02/19 Javascript
[59:36]2018DOTA2亚洲邀请赛 4.3 突围赛 Secret vs VG 第二场
2018/04/04 DOTA
Python 矩阵转置的几种方法小结
2019/12/02 Python
Django中Aggregation聚合的基本使用方法
2020/07/09 Python
python3 循环读取excel文件并写入json操作
2020/07/14 Python
css3高级选择器使用方法
2013/12/02 HTML / CSS
Html5 Canvas 实现一个“刮刮乐”游戏
2019/09/05 HTML / CSS
酒店个人求职信范文
2014/01/25 职场文书
新闻专业毕业生英文求职信
2014/03/19 职场文书
对党的十八届四中全会的期盼
2014/10/17 职场文书
2014年租房协议书范本
2014/10/30 职场文书
反邪教观后感
2015/06/11 职场文书
护士岗前培训心得体会
2016/01/08 职场文书
研究生毕业登记表的自我鉴定范文
2019/07/15 职场文书
Android基于Fresco实现圆角和圆形图片
2022/04/01 Java/Android