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 相关文章推荐
直接生成打开窗口代码,不必下载
May 14 Javascript
跨浏览器开发经验总结(三)   警惕“IE依赖综合症”
May 13 Javascript
JS+CSS实现鼠标滑过时动态翻滚的导航条效果
Sep 24 Javascript
实例解析JS布尔对象的toString()方法和valueOf()方法
Oct 25 Javascript
JavaScript编码风格指南(中文版)
Aug 26 Javascript
jQuery右下角悬浮广告实例
Oct 17 Javascript
基于vue.js实现的分页
Mar 13 Javascript
JS实现数组的增删改查操作示例
Aug 29 Javascript
详解html-webpack-plugin插件(用法总结)
Sep 12 Javascript
JavaScript禁用右键单击优缺点分析
Jan 20 Javascript
JS实现头条新闻的经典轮播图效果示例
Jan 30 Javascript
Vue通过getAction的finally来最大程度避免影响主数据呈现问题
Apr 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
php中获取关键词及所属来源搜索引擎名称的代码
2011/02/15 PHP
让你成为更出色的PHP开发者的10个技巧
2011/02/25 PHP
PHP spl_autoload_register实现自动加载研究
2011/12/06 PHP
刷新PHP缓冲区为你的站点加速
2015/10/10 PHP
PHP实现基于回溯法求解迷宫问题的方法详解
2017/08/17 PHP
php解析非标准json、非规范json的方式实例
2020/12/10 PHP
Gambit vs CL BO3 第一场 2.13
2021/03/10 DOTA
兼容多浏览器的iframe自适应高度(ie8 、谷歌浏览器4.0和 firefox3.5.3)
2009/11/04 Javascript
更优雅的事件触发兼容
2011/10/24 Javascript
比较新旧两个数组值得增加和删除的JS代码
2013/10/30 Javascript
js面向对象之静态方法和静态属性实例分析
2015/01/10 Javascript
一种Javascript解释ajax返回的json的好方法(推荐)
2016/06/02 Javascript
原生js实现自由拖拽弹窗代码demo
2016/06/29 Javascript
JS for...in 遍历语句用法实例分析
2016/08/24 Javascript
在web中js实现类似excel的表格控件
2016/09/01 Javascript
JS中用childNodes获取子元素换行会产生一个子元素
2016/12/08 Javascript
Vue表单验证插件Vue Validator使用方法详解
2017/04/07 Javascript
一次围绕setTimeout的前端面试经验分享
2017/06/15 Javascript
vue-cli 打包使用history模式的后端配置实例
2018/09/20 Javascript
vue输入节流,避免实时请求接口的实例代码
2019/10/30 Javascript
vue开发移动端底部导航条功能
2020/04/08 Javascript
JS实现页面鼠标点击出现图片特效
2020/08/19 Javascript
javascript实现放大镜功能
2020/12/09 Javascript
[02:30]DOTA2放量测试专访海涛:呼吁保护新手玩家
2013/08/26 DOTA
python 判断一个进程是否存在
2009/04/09 Python
python使用str &amp; repr转换字符串
2016/10/13 Python
详解Python3注释知识点
2019/02/19 Python
英国领先的互联网葡萄酒礼品商:Vintage Wine & Port
2019/05/24 全球购物
四川internet信息高速公路(C#)笔试题
2012/02/29 面试题
中餐厅主管的职责范文
2014/02/04 职场文书
公务员更新知识培训实施方案
2014/03/31 职场文书
公司节能减排倡议书
2014/05/14 职场文书
敬老院献爱心活动总结
2014/07/08 职场文书
优秀教师推荐材料
2014/12/16 职场文书
监考失职检讨书
2015/01/26 职场文书
据Python爬虫不靠谱预测可知今年双十一销售额将超过6000亿元
2021/11/11 Python