zoukankan      html  css  js  c++  java
  • jquery.uploadify.js 修改,添加事件前后

    /*
    Uploadify v2.1.0
    newsea edited by 2010.2.27
    edit the pop mode and add some method such as :
    onselected, oncanceled, oninited.
    */
    
    if (jQuery) (
    	function (jQuery) {
    	    jQuery.extend(jQuery.fn, {
    	        uploadify: function (options) {
    	            jQuery(this).each(function () {
    	                settings = jQuery.extend({
    	                    id: jQuery(this).attr('id'), // The ID of the object being Uploadified
    	                    uploader: 'uploadify.swf', // The path to the uploadify swf file
    	                    script: 'uploadify.php', // The path to the uploadify backend upload script
    	                    expressInstall: null, // The path to the express install swf file
    	                    folder: '', // The path to the upload folder
    	                    height: 30, // The height of the flash button
    	                     110, // The width of the flash button
    	                    cancelImg: 'cancel.png', // The path to the cancel image for the default file queue item container
    	                    wmode: 'opaque', // The wmode of the flash file
    	                    scriptAccess: 'sameDomain', // Set to "always" to allow script access across domains
    	                    fileDataName: 'Filedata', // The name of the file collection object in the backend upload script
    	                    method: 'POST', // The method for sending variables to the backend upload script
    	                    queueSizeLimit: 999, // The maximum size of the file queue
    	                    simUploadLimit: 1, // The number of simultaneous uploads allowed
    	                    queueID: false, // The optional ID of the queue container
    	                    displayData: 'percentage', // Set to "speed" to show the upload speed in the default queue item
    	                    onInit: function () { }, // Function to run when uploadify is initialized
    	                    onInited: function () { },
    	                    onSelect: function () { }, // Function to run when a file is selected
    	                    onSelected: function () { }, // Function to run when a file is selected
    	                    onQueueFull: function () { }, // Function to run when the queue reaches capacity
    	                    onCheck: function () { }, // Function to run when script checks for duplicate files on the server
    	                    onCancel: function () { }, // Function to run when an item is cleared from the queue
    	                    onCanceled: function () { },
    	                    onError: function () { }, // Function to run when an upload item returns an error
    	                    onProgress: function () { }, // Function to run each time the upload progress is updated
    	                    onComplete: function () { }, // Function to run when an upload is completed
    	                    onAllComplete: function () { }  // Functino to run when all uploads are completed
    	                }, options);
    	                var pagePath = location.pathname;
    	                pagePath = pagePath.split('/');
    	                pagePath.pop();
    	                pagePath = pagePath.join('/') + '/';
    	                var data = {};
    	                data.uploadifyID = settings.id;
    	                data.pagepath = pagePath;
    	                if (settings.buttonImg) data.buttonImg = escape(settings.buttonImg);
    	                if (settings.buttonText) data.buttonText = escape(settings.buttonText);
    	                if (settings.rollover) data.rollover = true;
    	                data.script = settings.script;
    	                data.folder = escape(settings.folder);
    	                if (settings.scriptData) {
    	                    var scriptDataString = '';
    	                    for (var name in settings.scriptData) {
    	                        scriptDataString += '&' + name + '=' + settings.scriptData[name];
    	                    }
    	                    data.scriptData = escape(scriptDataString.substr(1));
    	                }
    	                data.width = settings.width;
    	                data.height = settings.height;
    	                data.wmode = settings.wmode;
    	                data.method = settings.method;
    	                data.queueSizeLimit = settings.queueSizeLimit;
    	                data.simUploadLimit = settings.simUploadLimit;
    	                if (settings.hideButton) data.hideButton = true;
    	                if (settings.fileDesc) data.fileDesc = settings.fileDesc;
    	                if (settings.fileExt) data.fileExt = settings.fileExt;
    	                if (settings.multi) data.multi = true;
    	                if (settings.auto) data.auto = true;
    	                if (settings.sizeLimit) data.sizeLimit = settings.sizeLimit;
    	                if (settings.checkScript) data.checkScript = settings.checkScript;
    	                if (settings.fileDataName) data.fileDataName = settings.fileDataName;
    	                if (settings.queueID) data.queueID = settings.queueID;
    	                if (settings.onInit() !== false) {
    	                    jQuery(this).css('display', 'none');
    	                    jQuery(this).after('<div id="' + jQuery(this).attr('id') + 'Uploader"></div>');
    	                    swfobject.embedSWF(settings.uploader, settings.id + 'Uploader', settings.width, settings.height, '9.0.24', settings.expressInstall, data, { 'quality': 'high', 'wmode': settings.wmode, 'allowScriptAccess': settings.scriptAccess });
    	                    if (settings.queueID == false) {
    	                        jQuery("#" + jQuery(this).attr('id') + "Uploader").after('<div id="' + jQuery(this).attr('id') + 'Queue" class="uploadifyQueue"></div>');
    	                    }
    	                    settings.onInited();
    	                }
    	                if (typeof (settings.onOpen) == 'function') {
    	                    jQuery(this).bind("uploadifyOpen", settings.onOpen);
    	                }
    	                jQuery(this).bind("uploadifySelect", { 'action': settings.onSelect, 'queueID': settings.queueID }, function (event, ID, fileObj) {
    	                    if (event.data.action(event, ID, fileObj) !== false) {
    	                        var byteSize = Math.round(fileObj.size / 1024 * 100) * .01;
    	                        var suffix = 'KB';
    	                        if (byteSize > 1000) {
    	                            byteSize = Math.round(byteSize * .001 * 100) * .01;
    	                            suffix = 'MB';
    	                        }
    	                        var sizeParts = byteSize.toString().split('.');
    	                        if (sizeParts.length > 1) {
    	                            byteSize = sizeParts[0] + '.' + sizeParts[1].substr(0, 2);
    	                        } else {
    	                            byteSize = sizeParts[0];
    	                        }
    	                        if (fileObj.name.length > 20) {
    	                            fileName = fileObj.name.substr(0, 20) + '...';
    	                        } else {
    	                            fileName = fileObj.name;
    	                        }
    	                        queue = '#' + jQuery(this).attr('id') + 'Queue';
    	                        if (event.data.queueID) {
    	                            queue = '#' + event.data.queueID;
    	                        }
    	                        jQuery(queue).append('<div id="' + jQuery(this).attr('id') + ID + '" class="uploadifyQueueItem">\
    								<div class="cancel">\
    									<a href="javascript:jQuery(\'#' + jQuery(this).attr('id') + '\').uploadifyCancel(\'' + ID + '\')"><img src="' + settings.cancelImg + '" border="0" /></a>\
    								</div>\
    								<span class="fileName">' + fileName + ' (' + byteSize + suffix + ')</span><span class="percentage"></span>\
    								<div class="uploadifyProgress">\
    									<div id="' + jQuery(this).attr('id') + ID + 'ProgressBar" class="uploadifyProgressBar"><!--Progress Bar--></div>\
    								</div>\
    							</div>');
    	                        jQuery(queue).show();
    
    	                        jQuery(queue).css("left", $('#' + jQuery(this).attr('id') + "Uploader").offset().left);
    	                        settings.onSelected();
    	                    }
    	                });
    	                if (typeof (settings.onSelectOnce) == 'function') {
    	                    jQuery(this).bind("uploadifySelectOnce", settings.onSelectOnce);
    	                }
    	                jQuery(this).bind("uploadifyQueueFull", { 'action': settings.onQueueFull }, function (event, queueSizeLimit) {
    	                    if (event.data.action(event, queueSizeLimit) !== false) {
    	                        alert('The queue is full.  The max size is ' + queueSizeLimit + '.');
    	                    }
    	                });
    	                jQuery(this).bind("uploadifyCheckExist", { 'action': settings.onCheck }, function (event, checkScript, fileQueueObj, folder, single) {
    	                    var postData = new Object();
    	                    postData = fileQueueObj;
    	                    postData.folder = pagePath + folder;
    	                    if (single) {
    	                        for (var ID in fileQueueObj) {
    	                            var singleFileID = ID;
    	                        }
    	                    }
    	                    jQuery.post(checkScript, postData, function (data) {
    	                        for (var key in data) {
    	                            if (event.data.action(event, checkScript, fileQueueObj, folder, single) !== false) {
    	                                var replaceFile = confirm("Do you want to replace the file " + data[key] + "?");
    	                                if (!replaceFile) {
    	                                    document.getElementById(jQuery(event.target).attr('id') + 'Uploader').cancelFileUpload(key, true, true);
    	                                }
    	                            }
    	                        }
    	                        if (single) {
    	                            document.getElementById(jQuery(event.target).attr('id') + 'Uploader').startFileUpload(singleFileID, true);
    	                        } else {
    	                            document.getElementById(jQuery(event.target).attr('id') + 'Uploader').startFileUpload(null, true);
    	                        }
    	                    }, "json");
    	                });
    	                jQuery(this).bind("uploadifyCancel", { 'action': settings.onCancel }, function (event, ID, fileObj, data, clearFast) {
    	                    if (event.data.action(event, ID, fileObj, data, clearFast) !== false) {
    	                        var fadeSpeed = (clearFast == true) ? 0 : 250;
    	                        jQuery("#" + jQuery(this).attr('id') + ID).fadeOut(fadeSpeed, function () {
    	                            if ($(this).siblings().length == 1) {
    	                                $(this).parent().hide();
    	                            }
    	                            jQuery(this).remove();
    	                            settings.onCanceled();
    	                        });
    
    	                    }
    	                });
    	                if (typeof (settings.onClearQueue) == 'function') {
    	                    jQuery(this).bind("uploadifyClearQueue", settings.onClearQueue);
    	                }
    	                var errorArray = [];
    	                jQuery(this).bind("uploadifyError", { 'action': settings.onError }, function (event, ID, fileObj, errorObj) {
    	                    if (event.data.action(event, ID, fileObj, errorObj) !== false) {
    	                        var fileArray = new Array(ID, fileObj, errorObj);
    	                        errorArray.push(fileArray);
    	                        jQuery("#" + jQuery(this).attr('id') + ID + " .percentage").text(" - " + errorObj.type + " Error");
    	                        jQuery("#" + jQuery(this).attr('id') + ID).addClass('uploadifyError');
    	                    }
    	                });
    	                jQuery(this).bind("uploadifyProgress", { 'action': settings.onProgress, 'toDisplay': settings.displayData }, function (event, ID, fileObj, data) {
    	                    if (event.data.action(event, ID, fileObj, data) !== false) {
    	                        jQuery("#" + jQuery(this).attr('id') + ID + "ProgressBar").css('width', data.percentage + '%');
    	                        if (event.data.toDisplay == 'percentage') displayData = ' - ' + data.percentage + '%';
    	                        if (event.data.toDisplay == 'speed') displayData = ' - ' + data.speed + 'KB/s';
    	                        if (event.data.toDisplay == null) displayData = ' ';
    	                        jQuery("#" + jQuery(this).attr('id') + ID + " .percentage").text(displayData);
    	                    }
    	                });
    	                jQuery(this).bind("uploadifyComplete", { 'action': settings.onComplete }, function (event, ID, fileObj, response, data) {
    	                    if (event.data.action(event, ID, fileObj, unescape(response), data) !== false) {
    	                        jQuery("#" + jQuery(this).attr('id') + ID + " .percentage").text(' - Completed');
    	                        jQuery("#" + jQuery(this).attr('id') + ID).fadeOut(250, function () {
    	                            if ($(this).siblings().length == 1) {
    	                                $(this).parent().hide();
    	                            }
    	                            jQuery(this).remove();
    	                        });
    	                    }
    
    	                });
    	                if (typeof (settings.onAllComplete) == 'function') {
    	                    jQuery(this).bind("uploadifyAllComplete", { 'action': settings.onAllComplete }, function (event, uploadObj) {
    	                        if (event.data.action(event, uploadObj) !== false) {
    	                            errorArray = [];
    	                        }
    	                    });
    	                }
    	            });
    	        },
    	        uploadifySettings: function (settingName, settingValue, resetObject) {
    	            var returnValue = false;
    	            jQuery(this).each(function () {
    	                if (settingName == 'scriptData' && settingValue != null) {
    	                    if (resetObject) {
    	                        var scriptData = settingValue;
    	                    } else {
    	                        var scriptData = jQuery.extend(settings.scriptData, settingValue);
    	                    }
    	                    var scriptDataString = '';
    	                    for (var name in scriptData) {
    	                        scriptDataString += '&' + name + '=' + escape(scriptData[name]);
    	                    }
    	                    settingValue = scriptDataString.substr(1);
    	                }
    	                returnValue = document.getElementById(jQuery(this).attr('id') + 'Uploader').updateSettings(settingName, settingValue);
    	            });
    	            if (settingValue == null) {
    	                if (settingName == 'scriptData') {
    	                    var returnSplit = unescape(returnValue).split('&');
    	                    var returnObj = new Object();
    	                    for (var i = 0; i < returnSplit.length; i++) {
    	                        var iSplit = returnSplit[i].split('=');
    	                        returnObj[iSplit[0]] = iSplit[1];
    	                    }
    	                    returnValue = returnObj;
    	                }
    	                return returnValue;
    	            }
    	        },
    	        uploadifyUpload: function (ID) {
    	            jQuery(this).each(function () {
    	                document.getElementById(jQuery(this).attr('id') + 'Uploader').startFileUpload(ID, false);
    	            });
    
    	        },
    	        uploadifyCancel: function (ID) {
    	            jQuery(this).each(function () {
    	                document.getElementById(jQuery(this).attr('id') + 'Uploader').cancelFileUpload(ID, true, false);
    	            });
    	        },
    	        uploadifyClearQueue: function () {
    	            jQuery(this).each(function () {
    	                document.getElementById(jQuery(this).attr('id') + 'Uploader').clearFileUploadQueue(false);
    	            });
    	        }
    	    })
    	})(jQuery);
    
    alarm   作者:NewSea     出处:http://newsea.cnblogs.com/    QQ,MSN:iamnewsea@hotmail.com

      如无特别标记说明,均为NewSea原创,版权私有,翻载必纠。欢迎交流,转载,但要在页面明显位置给出原文连接。谢谢。
  • 相关阅读:
    Java并发之synchronized关键字和Lock接口
    Java并发之volatile关键字
    浏览器的缓存机制
    垃圾回收技术
    import和require区别
    垃圾回收机制
    TCP四次挥手
    进程
    TCP基础概念
    TCP三次握手
  • 原文地址:https://www.cnblogs.com/newsea/p/1685079.html
Copyright © 2011-2022 走看看