jQuery插件imgPreviewQs实现上传图片预览


Posted in Javascript onJanuary 15, 2016

上传图片预览,支持IE6、IE7、IE8、IE9、IE10、IE11。 火狐、Chrome 具体没有测试,但是高版本都支持。

imgPreviewQs.js

/*!
  依赖 jQuery 1.5.2 
  (c) 2016 
  license: http://www.opensource.org/licenses/mit-license.php
*/
(function($){
$.fn.imgPreviewQs = function(options){
  function isIE(ver){
    var b = document.createElement('b')
    b.innerHTML = '<!--[if IE ' + ver + ']><i></i><![endif]-->'
    return b.getElementsByTagName('i').length === 1;
  }
   
  options = $.extend( {}, $.fn.imgPreviewQs.defaults,options);
  var $this =$(this);
  $this.change(function(){
    var regex=/(.*)\.(jpg|jpeg|gif|bmp|png)$/;
    var val = $this.val();
    if(!regex.test(val)){
      alert("请选择图片");
      return false;
    }
    if(browserQs.isIE(8)){
      HanderIE789($this);
    }
    else if(window.FileReader){
      HanderFileReader($this);
    }
    else if(browserQs.isIE(9)){
      HanderIE789($this);
    }
    else if(browserQs.isIE(6)){
      HanderOther($this);
    }
    else if(browserQs.isIE(7)){
      HanderIE789($this);
    }
    else{
      $("#"+options.destID).html("浏览器不支持预览图片");
    }
  });
   
  function HanderFileReader($this){
    var oPreviewImg = null, oFReader = new window.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) 
    {
      $("#"+options.destID).html("<img src='"+oFREvent.target.result+"' style='width:100%;height:100%;'/>");
    };
     
    var aFiles = $this.get(0).files;
    if (aFiles.length === 0) { return; }
    if (!rFilter.test(aFiles[0].type)) { alert("请选择图片"); return; }
    oFReader.readAsDataURL(aFiles[0]);
  }
   
  function HanderIE789($this){
    $("#"+options.destID).css("filter","progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale,src='"+getUrl($this)+"')");
  }
   
  function HanderOther($this){
    $("#"+options.destID).html("<img src='"+$this.val()+"' style='width:100%;height:100%;'/>");
  }
   
  function getUrl($this){
    $this.select();
    $this.blur();
    var imgSrc =document.selection.createRange().text;
    document.selection.empty();
    return imgSrc;
  }
}; 
$.fn.imgPreviewQs.defaults = {
    destID:""
};
})(jQuery);
Javascript 相关文章推荐
jquery复选框CHECKBOX全选、反选
Aug 30 Javascript
用 Javascript 验证表单(form)中多选框(checkbox)值
Sep 08 Javascript
基于jquery的划词搜索实现(备忘)
Sep 14 Javascript
cocos2dx骨骼动画Armature源码剖析(三)
Sep 08 Javascript
jQuery实现右键菜单、遮罩等效果代码
Sep 27 Javascript
最原始的jQuery注册验证方式
Oct 11 Javascript
获取本机IP地址的实例(JavaScript / Node.js)
Nov 24 Javascript
vue中实现先请求数据再渲染dom分享
Mar 17 Javascript
vue 标签属性数据绑定和拼接的实现方法
May 17 Javascript
security.js实现的RSA加密功能示例
Jun 06 Javascript
vue引入Excel表格插件的方法
Apr 28 Vue.js
如何理解Vue简单状态管理之store模式
May 15 Vue.js
实例详解AngularJS实现无限级联动菜单
Jan 15 #Javascript
利用CSS3在Angular中实现动画
Jan 15 #Javascript
JavaScript程序开发之JS代码放置的位置
Jan 15 #Javascript
探讨JavaScript标签位置的存放与功能有无关系
Jan 15 #Javascript
JavaScript知识点总结之如何提高性能
Jan 15 #Javascript
jQuery动态添加及删除表单上传元素的方法(附demo源码下载)
Jan 15 #Javascript
JavaScript焦点事件、鼠标事件和滚轮事件使用详解
Jan 15 #Javascript
You might like
php daodb插入、更新与删除数据
2009/03/19 PHP
php后退一页表单内容保存实现方法
2012/06/17 PHP
PHP中file_exists与is_file,is_dir的区别介绍
2012/09/12 PHP
php实现邮件发送并带有附件
2014/01/24 PHP
PHP框架Swoole定时器Timer特性分析
2014/08/19 PHP
详解WordPress开发中过滤属性以及Sql语句的函数使用
2015/12/25 PHP
PHP各种常见经典算法总结【排序、查找、翻转等】
2019/08/05 PHP
JavaScript Accessor实现说明
2010/12/06 Javascript
javascript hashtable 修正版 下载
2010/12/30 Javascript
基于jquery点击自以外任意处,关闭自身的代码
2012/02/10 Javascript
Three.js源码阅读笔记(基础的核心Core对象)
2012/12/27 Javascript
原生JS实现加入收藏夹的代码
2013/10/24 Javascript
JavaScript获取多个数组的交集简单实例
2013/11/11 Javascript
node.js中的fs.linkSync方法使用说明
2014/12/15 Javascript
javascript实现tab切换的两个实例
2015/11/05 Javascript
浅析javascript中的事件代理
2015/11/06 Javascript
Javascript 普通函数和构造函数的区别
2016/11/05 Javascript
JS调用打印机功能简单示例
2016/11/28 Javascript
nodejs和react实现即时通讯简易聊天室功能
2019/08/21 NodeJs
ES6对象操作实例详解
2020/05/23 Javascript
[53:10]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs VG 第一场
2018/04/11 DOTA
[49:27]LGD vs OG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[58:37]Serenity vs Fnatic 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
Python切片工具pillow用法示例
2018/03/30 Python
python 批量解压压缩文件的实例代码
2019/06/27 Python
django框架实现模板中获取request 的各种信息示例
2019/07/01 Python
详解python UDP 编程
2020/08/24 Python
selenium携带cookies模拟登陆CSDN的实现
2021/01/19 Python
super()与this()的区别
2016/01/17 面试题
2014年保育员工作总结
2014/12/02 职场文书
高考升学宴答谢词
2015/01/20 职场文书
手术室护士个人总结
2015/02/13 职场文书
2015少先队大队辅导员工作总结
2015/07/24 职场文书
python爬虫--selenium模块
2021/03/31 Python
Python面向对象编程之类的概念
2021/11/01 Python
JS前端canvas交互实现拖拽旋转及缩放示例
2022/08/05 Javascript