本地图片预览(支持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使用手册之二 DOM操作
Mar 24 Javascript
js用图作提交按钮或超连接
Mar 26 Javascript
前端开发的开始---基于面向对象的Ajax类
Sep 17 Javascript
自己做的模拟模态对话框实现代码
May 23 Javascript
js data日期初始化的5种方法
Dec 29 Javascript
文本框水印提示效果的简单实现代码
Feb 22 Javascript
ajax+jQuery实现级联显示地址的方法
May 06 Javascript
jQuery fadeOut 异步实例代码详解
Aug 18 Javascript
详解springmvc 接收json对象的两种方式
Dec 06 Javascript
详解如何使用Vue2做服务端渲染
Mar 29 Javascript
微信小程序tabBar底部导航中文注解api详解
Aug 16 Javascript
vue常用高阶函数及综合实例
Feb 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的五种设计模式
2012/09/05 PHP
详解php中反射的应用
2016/03/15 PHP
yii框架使用分页的方法分析
2019/07/25 PHP
php7 参数、整形及字符串处理机制修改实例分析
2020/05/25 PHP
详解使用php-cs-fixer格式化代码
2020/09/16 PHP
innerhtml用法 innertext用法 以及innerHTML与innertext的区别
2009/10/26 Javascript
jquery ajax例子返回值详解
2012/09/11 Javascript
5个书写JavaScript代码的坏习惯,看看你中枪了没?
2014/11/06 Javascript
用canvas 实现个图片三角化(LOW POLY)效果
2016/02/18 Javascript
JS、jQuery中select的用法详解
2016/04/21 Javascript
Angular和百度地图的结合实例代码
2016/10/19 Javascript
Angular2学习笔记——详解NgModule模块
2016/12/02 Javascript
微信小程序之分享页面如何返回首页的示例
2018/03/28 Javascript
深入理解Node内建模块和对象
2019/03/12 Javascript
jQuery实现input输入框获取焦点与失去焦点时提示的消失与显示功能示例
2019/05/27 jQuery
JS实现可控制的进度条
2020/03/25 Javascript
[02:03]风行者至宝清风环佩外观展示
2020/09/05 DOTA
[01:01:23]完美世界DOTA2联赛PWL S2 Forest vs FTD.C 第一场 11.26
2020/11/30 DOTA
在Django框架中运行Python应用全攻略
2015/07/17 Python
Python 批量合并多个txt文件的实例讲解
2018/05/08 Python
学习python分支结构
2019/05/17 Python
python的列表List求均值和中位数实例
2020/03/03 Python
pytorch使用horovod多gpu训练的实现
2020/09/09 Python
python用tkinter实现一个简易能进行随机点名的界面
2020/09/27 Python
html5摇一摇代码优化包括DeviceMotionEvent等等
2014/09/01 HTML / CSS
家得宝加拿大家装网上商店:The Home Depot加拿大
2016/08/27 全球购物
香港唯港荟酒店预订:Hotel ICON
2018/03/27 全球购物
阿联酋优惠券服务:Living Kool
2019/12/12 全球购物
化工专业应届生求职信
2013/11/08 职场文书
毕业生实习鉴定
2013/12/11 职场文书
怎样写好自我评价呢?
2014/02/16 职场文书
2015幼儿园庆元旦活动方案
2014/12/09 职场文书
Python使用protobuf序列化和反序列化的实现
2021/05/19 Python
Pyqt5将多个类组合在一个界面显示的完整示例
2021/09/04 Python
redis复制有可能碰到的问题汇总
2022/04/03 Redis
在python中读取和写入CSV文件详情
2022/06/28 Python