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 事件查询综合
Jul 13 Javascript
javascript客户端解决方案 缓存提供程序
Jul 14 Javascript
使用jquery的ajax需要注意的地方dataType的设置
Aug 12 Javascript
理解Javascript闭包
Nov 01 Javascript
jquery使用淘宝接口跨域查询手机号码归属地实例
Nov 28 Javascript
TypeScript 学习笔记之基本类型
Jun 19 Javascript
纯JS实现本地图片预览的方法
Jul 31 Javascript
js实现select选择框效果及美化
Aug 19 Javascript
Angularjs cookie 操作实例详解
Sep 27 Javascript
Mac中安装nvm的教程分享
Dec 11 Javascript
Angular实现点击按钮后在上方显示输入内容的方法
Dec 27 Javascript
js实现敏感词过滤算法及实现逻辑
Jul 24 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
DOTA2 1月28日更新:监管系统降临刀塔世界
2021/01/28 DOTA
JS中encodeURIComponent函数用php解码的代码
2012/03/01 PHP
基于MySQL到MongoDB简易对照表的详解
2013/06/03 PHP
Laravel框架实现修改登录和注册接口数据返回格式的方法
2018/08/17 PHP
Array.prototype.slice.apply的使用方法
2010/03/17 Javascript
Javascript笔记一 js以及json基础使用说明
2010/05/22 Javascript
判断目标是否是window,document,和拥有tagName的Element的代码
2010/05/31 Javascript
PHP abstract与interface之间的区别
2013/11/11 Javascript
JavaScript中获取高度和宽度函数总结
2014/10/08 Javascript
js获取当前年月日-YYYYmmDD格式的实现代码
2016/06/01 Javascript
使用BootStrapValidator完成前端输入验证
2016/09/28 Javascript
Bootstrap源码解读排版(1)
2016/12/23 Javascript
html5 canvas 详细使用教程
2017/01/20 Javascript
webpack+vue2构建vue项目骨架的方法
2018/01/09 Javascript
Vue递归实现树形菜单方法实例
2018/11/06 Javascript
vue-awesome-swiper 基于vue实现h5滑动翻页效果【推荐】
2018/11/08 Javascript
在layui中使用form表单监听ajax异步验证注册的实例
2019/09/03 Javascript
JavaScript将数组转换为链表的方法
2020/02/16 Javascript
jQuery AJAX应用实例总结
2020/05/19 jQuery
vue中选中多个选项并且改变选中的样式的实例代码
2020/09/16 Javascript
Python3写入文件常用方法实例分析
2015/05/22 Python
Python读取键盘输入的2种方法
2015/06/16 Python
python队列通信:rabbitMQ的使用(实例讲解)
2017/12/22 Python
Python类的继承和多态代码详解
2017/12/27 Python
Python实现网站表单提交和模板
2019/01/15 Python
Python基于Opencv来快速实现人脸识别过程详解(完整版)
2019/07/11 Python
使用tensorflow根据输入更改tensor shape
2020/06/23 Python
世界知名接发和假发品牌:Poze Hair
2017/03/08 全球购物
Europcar比利时:租车
2019/08/26 全球购物
说出一些常用的类,包,接口
2014/09/22 面试题
小学生成长感言
2014/01/30 职场文书
《春天来了》教学反思
2014/04/07 职场文书
职业道德模范事迹材料
2014/08/24 职场文书
神农溪导游词
2015/02/11 职场文书
交通事故起诉书
2015/05/19 职场文书
十大最强岩石系宝可梦,怪颚龙实力最强,第七破坏力很强
2022/03/18 日漫