jquery实现兼容浏览器的图片上传本地预览功能


Posted in Javascript onOctober 14, 2013

一、图片上传实现本地预览

由于上传图片功能,现在大多数都需要在本地实现预览,为了能够更好的让用户体验到效果,实现成品的证明,需要兼容好几种浏览器,所有通过各个例子整合了这个例子插件,兼容火狐、谷歌、ie8,其他的没有进行测试过

(function($){ 
jQuery.fn.extend({ 
uploadPreview: function(opts){ 
opts = jQuery.extend({ 
width: 0, 
height: 0, 
imgPreview: null, 
imgType: ["gif", "jpeg", "jpg", "bmp", "png"], 
callback: function(){ return false; } 
}, opts || {}); var _self = this; 
var _this = $(this); 
var imgPreview = $(opts.imgPreview); 
//设置样式 
autoScaling = function(){ 
imgPreview.css({"margin-left": 0,"margin-top": 0,"width":opts.width,"height":opts.height}); 
imgPreview.show(); 
} 
//file按钮出发事件 
_this.change(function(){ 
if (this.value) { 
if (!RegExp("\.(" + opts.imgType.join("|") + ")$", "i").test(this.value.toLowerCase())) { 
alert("图片类型必须是" + opts.imgType.join(",") + "中的一种"); 
this.value = ""; 
return false; 
} 
if ($.browser.msie) {//判断ie 
var path = $(this).val(); 
if (/"\w\W"/.test(path)) { 
path = path.slice(1,-1); 
} 
imgPreview.attr("src",path); 
imgPreview.css({"margin-left": 0,"margin-top": 0,"width":opts.width,"height":opts.height}); 
setTimeout("autoScaling()", 100); 
} 
else { 
if ($.browser.version < 7) { 
imgPreview.attr('src', this.files.item(0).getAsDataURL()); 
} 
else { 
oFReader = new FileReader(), rFilter = /^(?:image\/bmp|image\/cis\-cod|image\/gif|image\/ief|image\/jpeg|image\/jpeg|image\/jpeg|image\/pipeg|image\/png|image\/svg\+xml|image\/tiff|image\/x\-cmu\-raster|image\/x\-cmx|image\/x\-icon|image\/x\-portable\-anymap|image\/x\-portable\-bitmap|image\/x\-portable\-graymap|image\/x\-portable\-pixmap|image\/x\-rgb|image\/x\-xbitmap|image\/x\-xpixmap|image\/x\-xwindowdump)$/i; 
oFReader.onload = function(oFREvent){ 
imgPreview.attr('src', oFREvent.target.result); 
}; 
var oFile = this.files[0]; 
oFReader.readAsDataURL(oFile); 
} 
imgPreview.css({"margin-left": 0,"margin-top": 0,"width":opts.width,"height":opts.height}); 
setTimeout("autoScaling()", 100); 
} 
} 
opts.callback(); 
}); 
} 
}); 
})(jQuery);

二、调用方法
jQuery(function(){ 
jQuery("#idFile1").uploadPreview({ 
width: 100, 
height: 100, 
imgPreview: "#idImg1", 
imgType: ["bmp", "gif", "png", "jpg"], 
callback: function() { 
ip1(); 
return false; 
} 
}); 
);
Javascript 相关文章推荐
popdiv
Jul 14 Javascript
基于jquery的当鼠标滚轮到最底端继续加载新数据思路分享(多用于微博、空间、论坛 )
Oct 10 Javascript
javascript实现单击和双击并存的方法
Dec 13 Javascript
jQuery实现表格展开与折叠的方法
May 04 Javascript
Jquery实现顶部弹出框特效
Aug 08 Javascript
15个值得开发人员关注的jQuery开发技巧和心得总结【经典收藏】
May 25 Javascript
Bootstrap轮播插件简单使用方法介绍
Jun 21 Javascript
jQuery简单获取DIV和A标签元素位置的方法
Feb 07 Javascript
js module大战
Apr 19 Javascript
Vue通过for循环随机生成不同的颜色或随机数的实例
Nov 09 Javascript
JS表单验证插件之数据与逻辑分离操作实例分析【策略模式】
May 01 Javascript
JavaScript React如何修改默认端口号方法详解
Jul 28 Javascript
js 距离某一时间点时间是多少实现代码
Oct 14 #Javascript
js算法中的排序、数组去重详细概述
Oct 14 #Javascript
鼠标拖动实现DIV排序示例代码
Oct 14 #Javascript
不同Jquery版本引发的问题解决
Oct 14 #Javascript
Jquery 类网页微信二维码图块滚动效果具体实现
Oct 14 #Javascript
javascript预加载图片、css、js的方法示例介绍
Oct 14 #Javascript
js获取或设置当前窗口url参数的小例子
Oct 14 #Javascript
You might like
web站点获取用户IP的安全方法 HTTP_X_FORWARDED_FOR检验
2013/06/01 PHP
php一次性删除前台checkbox多选内容的方法
2013/09/22 PHP
PHP从FLV文件获取视频预览图的方法
2015/03/12 PHP
PHP 实现类似js中alert() 提示框
2015/03/18 PHP
php结合redis高并发下发帖、发微博的实现方法
2016/12/15 PHP
流量统计器如何鉴别C#:WebBrowser中伪造referer
2015/01/07 Javascript
JS中的THIS和WINDOW.EVENT.SRCELEMENT详解
2015/05/25 Javascript
jquery实现多次上传同一张图片
2017/01/09 Javascript
微信小程序 简单教程实例详解
2017/01/13 Javascript
jQuery中 bind的用法简单介绍
2017/02/13 Javascript
nodejs中Express与Koa2对比分析
2018/02/06 NodeJs
vue实现通讯录功能
2018/07/14 Javascript
基于vue.js中关于下拉框的值默认及绑定问题
2018/08/22 Javascript
vue给组件传递不同的值方法
2018/09/29 Javascript
简单通过settimeout看javascript的运行机制
2019/05/10 Javascript
微信小程序官方动态自定义底部tabBar的例子
2019/09/04 Javascript
解决vue+ element ui 表单验证有值但验证失败问题
2020/01/16 Javascript
python自动格式化json文件的方法
2015/03/11 Python
Python fileinput模块使用实例
2015/05/28 Python
详解django中自定义标签和过滤器
2017/07/03 Python
Python常用的json标准库
2019/02/19 Python
python 实现返回一个列表中出现次数最多的元素方法
2019/06/11 Python
基于Python解密仿射密码
2019/10/21 Python
Django:使用filter的pk进行多值查询操作
2020/07/15 Python
python rsa-oaep加密的示例代码
2020/09/23 Python
Django Auth用户认证组件实现代码
2020/10/13 Python
Python Pandas数据分析工具用法实例
2020/11/05 Python
详解Django关于StreamingHttpResponse与FileResponse文件下载的最优方法
2021/01/07 Python
公积金单位接收函
2014/01/11 职场文书
网上开商店的创业计划书
2014/01/19 职场文书
欢迎词怎么写
2015/01/23 职场文书
赔偿协议书
2015/01/27 职场文书
中学生自我评价2015
2015/03/03 职场文书
2015年社区党务工作总结
2015/04/21 职场文书
mysql分组后合并显示一个字段的多条数据方式
2022/01/22 MySQL
《废话连篇——致新手》——chinapizza
2022/04/05 无线电