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 tab插件制作实现代码
Jun 22 Javascript
javascript ready和load事件的区别示例介绍
Aug 30 Javascript
在JavaScript里防止事件函数高频触发和高频调用的方法
Sep 06 Javascript
JS实现获取键盘按下的按键并显示在页面上的方法
Nov 04 Javascript
JavaScript的ExtJS框架中数面板TreePanel的使用实例解析
May 21 Javascript
AngularJS ng-template寄宿方式用法分析
Nov 07 Javascript
JS匿名函数类生成方式实例分析
Nov 26 Javascript
详解打造 Vue.js 可复用组件
Mar 24 Javascript
angular.js和vue.js中实现函数去抖示例(debounce)
Jan 18 Javascript
JS/jQuery实现简单的开关灯效果【案例】
Feb 19 jQuery
vue自定义指令之面板拖拽的实现
Apr 14 Javascript
微信小程序本地存储实现每日签到、连续签到功能
Oct 09 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
全国FM电台频率大全 - 21 海南省
2020/03/11 无线电
PHP数据库链接类(PDO+Access)实例分享
2013/12/05 PHP
PHP ajax 异步执行不等待执行结果的处理方法
2015/05/27 PHP
如何利用预加载优化Laravel Model查询详解
2017/08/11 PHP
自动检查并替换文本框内的字符
2006/06/30 Javascript
javascript之dhDataGrid Ver2.0.0代码
2007/07/01 Javascript
推荐30个新鲜出炉的精美 jQuery 效果
2012/03/26 Javascript
javascript中的delete使用详解
2013/04/11 Javascript
jQuery插件Tooltipster实现漂亮的工具提示
2015/04/12 Javascript
js实现时间显示几天前、几小时前或者几分钟前的方法集锦
2015/05/29 Javascript
深入分析JSON编码格式提交表单数据
2015/06/25 Javascript
Javascript实现快速排序(Quicksort)的算法详解
2015/09/06 Javascript
javascript断点调试心得分享
2016/04/23 Javascript
Vue实现Header渐隐渐现效果的实例代码
2020/11/05 Javascript
[03:03]DOTA2校园争霸赛 济南城市决赛欢乐发奖活动
2013/10/21 DOTA
python选择排序算法实例总结
2015/07/01 Python
在IPython中执行Python程序文件的示例
2018/11/01 Python
Django框架下静态模板的继承操作示例
2019/11/08 Python
python爬虫实现获取下一页代码
2020/03/13 Python
使用Pytorch搭建模型的步骤
2020/11/16 Python
Expedia韩国官网:亚洲发展最快的在线旅游门户网站
2018/02/26 全球购物
英国户外玩具儿童游乐设备网站:TP Toys(蹦床、攀爬框架、秋千、滑梯和游戏屋)
2018/04/09 全球购物
美赞臣营养马来西亚旗舰店:Enfagrow马来西亚
2019/07/26 全球购物
Marc O’Polo俄罗斯官方在线商店:德国高端时尚品牌
2019/12/26 全球购物
英国豪华家具和经典家居饰品购物网站:OKA
2020/06/05 全球购物
Yahoo-PHP面试题2
2014/12/06 面试题
Python里面search()和match()的区别
2016/09/21 面试题
体育教育专业毕业生自荐信
2013/11/15 职场文书
军训口号
2014/06/13 职场文书
公务员群众路线专题民主生活会发言材料
2014/09/17 职场文书
语文教师求职信范文
2015/03/20 职场文书
女性健康知识讲座通知
2015/04/23 职场文书
社区安全温馨提示语
2015/07/14 职场文书
2015中学教学工作总结
2015/07/22 职场文书
Python中使用Lambda函数的5种用法
2021/04/01 Python
python index() 与 rindex() 方法的使用示例详解
2022/12/24 Python