本地图片预览(支持IE6/IE7/IE8/Firefox3)经验总结

 更新时间:2013年03月25日 15:09:54   作者:  
遇到的本地图片预览的需求,IE6下可以直接从file的value获取图片路径来显示预览,IE7和IE8下通过select获取file的图片路径,再用滤镜来显示预览,至于FireFox祥看本文吧,希望可以帮助到你

最近在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计算正方形面积

    这篇文章主要为大家详细介绍了JavaScript计算正方形面积,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • 微信小程序实现吸顶盒效果

    微信小程序实现吸顶盒效果

    这篇文章主要为大家详细介绍了微信小程序实现吸顶盒效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • 聊一聊JS中的prototype

    聊一聊JS中的prototype

    function定义的对象有一个prototype属性,prototype属性又指向了一个prototype对象,注意prototype属性与prototype对象是两个不同的东西,要注意区别.这篇文章主要介绍了JS中的prototype的相关资料,需要的朋友可以参考下
    2016-09-09
  • JS 动态获取节点代码innerHTML分析 [IE,FF]

    JS 动态获取节点代码innerHTML分析 [IE,FF]

    在IE 环境下 赋值类型为对象时 innerHTML 获取不到其改变,在FireFox环境下 .属性 方式获取不到其改变。
    2009-11-11
  • js的回调函数详解

    js的回调函数详解

    本文主要介绍了个人对于javascript中回调函数的理解和使用方法及示例,需要的朋友可以参考下
    2015-01-01
  • 用JS剩余字数计算的代码

    用JS剩余字数计算的代码

    函数中首先给maxChars变量指定了值(输入区内最多可用的字符数,注意,该变量是个可用于计算的数值)
    2008-07-07
  • 详解Javascript中prototype属性(推荐)

    详解Javascript中prototype属性(推荐)

    这篇文章主要介绍了Javascript中prototype属性的相关资料,本文介绍的非常详细,具有参考借鉴价值,感兴趣的朋友一起看看吧
    2016-09-09
  • JS从一组数据中找到指定的单条数据的方法

    JS从一组数据中找到指定的单条数据的方法

    这篇文章给大家介绍基于js如何从一组数据中找到指定的单条数据,非常实用,实现方案也很简单,需要的朋友可以参考下
    2016-06-06
  • js文件Cookie存取值示例代码

    js文件Cookie存取值示例代码

    这篇文章主要介绍了js文件Cookie存取值的使用,需要的朋友可以参考下
    2014-02-02
  • js弹出模式对话框,并接收回传值的方法

    js弹出模式对话框,并接收回传值的方法

    js弹出模式对话框,并接收回传值的方法,需要的朋友可以参考一下
    2013-03-03

最新评论