jquery實(shí)現(xiàn)兼容瀏覽器的圖片上傳本地預(yù)覽功能
更新時(shí)間:2013年10月14日 17:50:28 作者:
圖片上傳本地預(yù)覽功能代碼在網(wǎng)上可以搜索很多,但同時(shí)可以兼容瀏覽器的話就多了,本文有個(gè)不錯(cuò)的示例,感興趣的朋友可以參考下
一、圖片上傳實(shí)現(xiàn)本地預(yù)覽
由于上傳圖片功能,現(xiàn)在大多數(shù)都需要在本地實(shí)現(xiàn)預(yù)覽,為了能夠更好的讓用戶體驗(yàn)到效果,實(shí)現(xiàn)成品的證明,需要兼容好幾種瀏覽器,所有通過(guò)各個(gè)例子整合了這個(gè)例子插件,兼容火狐、谷歌、ie8,其他的沒(méi)有進(jìn)行測(cè)試過(guò)
(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);
//設(shè)置樣式
autoScaling = function(){
imgPreview.css({"margin-left": 0,"margin-top": 0,"width":opts.width,"height":opts.height});
imgPreview.show();
}
//file按鈕出發(fā)事件
_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);
二、調(diào)用方法
jQuery(function(){
jQuery("#idFile1").uploadPreview({
width: 100,
height: 100,
imgPreview: "#idImg1",
imgType: ["bmp", "gif", "png", "jpg"],
callback: function() {
ip1();
return false;
}
});
);
由于上傳圖片功能,現(xiàn)在大多數(shù)都需要在本地實(shí)現(xiàn)預(yù)覽,為了能夠更好的讓用戶體驗(yàn)到效果,實(shí)現(xiàn)成品的證明,需要兼容好幾種瀏覽器,所有通過(guò)各個(gè)例子整合了這個(gè)例子插件,兼容火狐、谷歌、ie8,其他的沒(méi)有進(jìn)行測(cè)試過(guò)
復(fù)制代碼 代碼如下:
(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);
//設(shè)置樣式
autoScaling = function(){
imgPreview.css({"margin-left": 0,"margin-top": 0,"width":opts.width,"height":opts.height});
imgPreview.show();
}
//file按鈕出發(fā)事件
_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);
二、調(diào)用方法
復(fù)制代碼 代碼如下:
jQuery(function(){
jQuery("#idFile1").uploadPreview({
width: 100,
height: 100,
imgPreview: "#idImg1",
imgType: ["bmp", "gif", "png", "jpg"],
callback: function() {
ip1();
return false;
}
});
);
您可能感興趣的文章:
- jquery實(shí)現(xiàn)圖片上傳前本地預(yù)覽功能
- 基于jquery實(shí)現(xiàn)的上傳圖片及圖片大小驗(yàn)證、圖片預(yù)覽效果代碼
- jQuery插件jcrop+Fileapi完美實(shí)現(xiàn)圖片上傳+裁剪+預(yù)覽的代碼分享
- 基于jquery實(shí)現(xiàn)圖片上傳本地預(yù)覽功能
- jQuery實(shí)現(xiàn)圖片放大預(yù)覽實(shí)現(xiàn)原理及代碼
- 基于JQuery實(shí)現(xiàn)圖片上傳預(yù)覽與刪除操作
- jQuery+HTML5實(shí)現(xiàn)圖片上傳前預(yù)覽效果
- jQuery點(diǎn)擊頭像上傳并預(yù)覽圖片
- jquery實(shí)現(xiàn)圖片上傳之前預(yù)覽的方法
- jQuery實(shí)現(xiàn)鼠標(biāo)經(jīng)過(guò)圖片預(yù)覽大圖效果
- 簡(jiǎn)單實(shí)現(xiàn)jQuery上傳圖片顯示預(yù)覽功能
- jQuery實(shí)現(xiàn)圖片上傳預(yù)覽效果功能完整實(shí)例【測(cè)試可用】
相關(guān)文章
jQuery實(shí)現(xiàn)異步獲取json數(shù)據(jù)的2種方式
這篇文章主要介紹了jQuery實(shí)現(xiàn)異步獲取json數(shù)據(jù)的2種方式,主要講述了$.getJSON方法與$.ajax方法,非常實(shí)用,需要的朋友可以參考下2014-08-08
jQuery實(shí)現(xiàn)鼠標(biāo)拖拽登錄框移動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了jQuery實(shí)現(xiàn)鼠標(biāo)拖拽登錄框移動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-09-09
從零開(kāi)始學(xué)習(xí)jQuery (九) jQuery工具函數(shù)
我們經(jīng)常要使用腳本處理各種業(yè)務(wù)邏輯, 最常見(jiàn)的就是數(shù)組和對(duì)象的操作. jQuery工具函數(shù)為我們操作對(duì)象和數(shù)組提供了便利條件.2011-02-02
jquery實(shí)現(xiàn)彈窗(系統(tǒng)提示框)效果
這篇文章主要為大家詳細(xì)介紹了jquery實(shí)現(xiàn)彈窗系統(tǒng)提示框效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12
JQuery設(shè)置時(shí)間段下拉選擇實(shí)例
這篇文章主要介紹了JQuery設(shè)置時(shí)間段下拉選擇的實(shí)現(xiàn)方法,實(shí)例分析了根據(jù)時(shí)間段設(shè)置下拉選項(xiàng)的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2014-12-12

