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 相关文章推荐
JQuery 1.6发布 性能提升,同时包含大量破坏性变更
May 10 Javascript
jQuery选择器的工作原理和优化分析
Jul 25 Javascript
JavaScript 判断浏览器是否支持SVG的代码
Mar 21 Javascript
JQuery中使用Ajax赋值给全局变量异常的解决方法
Jan 10 Javascript
jQuery表格列宽可拖拽改变且兼容firfox
Sep 03 Javascript
JavaScript编程学习技巧汇总
Feb 21 Javascript
js控制div层的叠加简单方法
Oct 15 Javascript
javascript中递归的两种写法
Jan 17 Javascript
提高Web性能的前端优化技巧总结
Feb 27 Javascript
原生JS实现日历组件的示例代码
Sep 22 Javascript
浅析Vue自定义组件的v-model
Nov 26 Javascript
利用React Router4实现的服务端直出渲染(SSR)
Jan 07 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
php生成随机数或者字符串的代码
2008/09/05 PHP
解析PHP中的内存管理,PHP动态分配和释放内存
2013/06/28 PHP
Symfony2在Nginx下的配置方法图文教程
2016/02/04 PHP
php删除txt文件指定行及按行读取txt文档数据的方法
2017/01/30 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
2017/12/21 PHP
浅析PHP中json_encode与json_decode的区别
2020/07/15 PHP
发布BlueShow v1.0 图片浏览器(类似lightbox)blueshow.js 打包下载
2007/07/21 Javascript
基于JQuery的6个Tab选项卡插件
2010/09/03 Javascript
6款新颖的jQuery和CSS3进度条插件推荐
2013/03/05 Javascript
jQuery 文本框得失焦点的简单实例
2014/02/19 Javascript
使用js显示当前时间示例
2014/03/02 Javascript
javascript操作excel生成报表全攻略
2014/05/04 Javascript
node.js中的fs.linkSync方法使用说明
2014/12/15 Javascript
jQuery on()方法绑定动态元素的点击事件实例代码浅析
2016/06/16 Javascript
BootStrap日期控件在模态框中选择时间下拉菜单无效的原因及解决办法(火狐下不能点击)
2016/08/18 Javascript
nodejs redis 发布订阅机制封装实现方法及实例代码
2016/12/15 NodeJs
微信小程序左滑删除效果的实现代码
2017/02/20 Javascript
ECMAScript6--解构
2017/03/30 Javascript
关于Vue组件库开发详析
2018/07/01 Javascript
用npm-run实现自动化任务的方法示例
2019/01/14 Javascript
微信小程序云开发之使用云函数
2019/05/17 Javascript
Vue 权限控制的两种方法(路由验证)
2019/08/16 Javascript
vue.js使用v-model实现父子组件间的双向通信示例
2020/02/05 Javascript
vue 表单输入框不支持focus及blur事件的解决方案
2020/11/17 Vue.js
Python的Tornado框架实现图片上传及图片大小修改功能
2016/06/30 Python
Python3学习笔记之列表方法示例详解
2017/10/06 Python
python线程池threadpool使用篇
2018/04/27 Python
python添加菜单图文讲解
2019/06/04 Python
Python符号计算之实现函数极限的方法
2019/07/15 Python
pycharm显示远程图片的实现
2019/11/04 Python
Pytorch保存模型用于测试和用于继续训练的区别详解
2020/01/10 Python
.NET里面什么时候需要调用垃圾回收
2015/06/01 面试题
小学防溺水制度
2014/01/29 职场文书
信息专业毕业生五年职业规划参考
2014/02/06 职场文书
师范学院毕业生求职信
2014/06/24 职场文书
MySQL时区造成时差问题
2022/04/13 MySQL