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 相关文章推荐
动态加载图片路径 保持JavaScript控件的相对独立性
Sep 06 Javascript
js弹窗返回值详解(window.open方式)
Jan 11 Javascript
javascript+canvas制作九宫格小程序
Dec 28 Javascript
jquery validate demo 基础
Oct 29 Javascript
JavaScript实现自动生成网页元素功能(按钮、文本等)
Nov 21 Javascript
jQuery控制li上下循环滚动插件用法实例(附demo源码下载)
May 28 Javascript
js中DOM三级列表(代码分享)
Mar 20 Javascript
解决vue+webpack打包路径的问题
Mar 06 Javascript
Koa2 之文件上传下载的示例代码
Mar 29 Javascript
微信小程序实现团购或秒杀批量倒计时
Nov 01 Javascript
vue+element 模态框表格形式的可编辑表单实现
Jun 07 Javascript
vue实现图片上传功能
May 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
星际争霸 Starcraft 秘技补丁
2020/03/14 星际争霸
详解:――如何将图片储存在数据库里
2006/12/05 PHP
php 升级到 5.3+ 后出现的一些错误,如 ereg(); ereg_replace(); 函数报错
2015/12/07 PHP
又拍云异步上传实例教程详解
2016/04/19 PHP
PHP实现的简单路由和类自动加载功能
2018/03/13 PHP
javascript判断机器是否联网的2种方法
2013/08/09 Javascript
NodeJS学习笔记之MongoDB模块
2015/01/13 NodeJs
Javascript之BOM(window对象)详解
2016/05/25 Javascript
jQuery中$.ajax()方法参数解析
2016/10/22 Javascript
fullPage.js和CSS3实现全屏滚动效果
2017/05/05 Javascript
vue解决跨域路由冲突问题思路解析
2017/11/03 Javascript
Vue.js devtool插件安装后无法使用的解决办法
2017/11/27 Javascript
完美解决手机网页中输入框被输入法遮挡的问题
2017/12/19 Javascript
记一次webpack3升级webpack4的踩坑经历
2018/06/12 Javascript
JSONP原理及应用实例详解
2018/09/13 Javascript
Vue之beforeEach非登录不能访问的实现(代码亲测)
2019/07/18 Javascript
vue cli3 调用百度翻译API翻译页面的实现示例
2019/09/13 Javascript
Vue实现页面添加水印功能
2019/11/09 Javascript
[41:17]VG vs Optic 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python递归计算N!的方法
2015/05/05 Python
python编程使用协程并发的优缺点
2018/09/20 Python
Python 调用 zabbix api的方法示例
2019/01/06 Python
Python实现将字符串的首字母变为大写,其余都变为小写的方法
2019/06/11 Python
Python多个装饰器的调用顺序实例解析
2020/05/22 Python
浅谈HTML5 defer和async的区别
2016/06/07 HTML / CSS
前后端结合实现amazeUI分页效果
2020/08/21 HTML / CSS
澳大利亚家居用品零售商:Harris Scarfe
2020/10/10 全球购物
Auguste The Label官网:澳大利亚一家精品女装时尚品牌
2020/06/14 全球购物
应届专科生个人的自我评价
2014/01/05 职场文书
幼儿园保教管理制度
2014/02/03 职场文书
党员批评与自我批评
2014/02/12 职场文书
2014年单位植树节活动方案
2014/03/23 职场文书
员工生日会策划方案
2014/06/14 职场文书
交通事故委托书范本精选
2014/10/04 职场文书
房地产置业顾问工作总结
2015/10/23 职场文书
如何使用python包中的sched事件调度器
2022/04/30 Python