function KUploadButton(options) { this.init(options); } _extend(KUploadButton, { init : function(options) { var self = this, button = K(options.button), fieldName = options.fieldName || 'file', url = options.url || '', title = button.val(), extraParams = options.extraParams || {}, cls = button[0].className || '', target = options.target || 'kindeditor_upload_iframe_' + new Date().getTime(); options.afterError = options.afterError || function(str) { K.options.errorMsgHandler(str, "error"); }; var hiddenElements = []; for(var k in extraParams){ hiddenElements.push(''); } var html = [ '
', (options.target ? '' : ''), (options.form ? '
' : '
'), '', hiddenElements.join(''), '', '', '', (options.form ? '
' : ''), '
'].join(''); var div = K(html, button.doc); button.hide(); button.before(div); self.div = div; self.button = button; self.iframe = options.target ? K('iframe[name="' + target + '"]') : K('iframe', div); self.form = options.form ? K(options.form) : K('form', div); self.fileBox = K('.ke-upload-file', div); var width = options.width || K('.ke-button-common', div).width(); K('.ke-upload-area', div).width(width); self.options = options; }, submit : function() { var self = this, iframe = self.iframe; iframe.bind('load', function() { iframe.unbind(); // 清空file var tempForm = document.createElement('form'); self.fileBox.before(tempForm); K(tempForm).append(self.fileBox); tempForm.reset(); K(tempForm).remove(true); var doc = K.iframeDoc(iframe), pre = doc.getElementsByTagName('pre')[0], str = '', data; if (pre) { str = pre.innerHTML; } else { str = doc.body.innerHTML; } // Bugfix: https://github.com/kindsoft/kindeditor/issues/81 str = _unescape(str); // Bugfix: [IE] 上传图片后,进度条一直处于加载状态。 iframe[0].src = 'javascript:false'; try { data = K.json(str); } catch (e) { self.options.afterError.call(self, '' + doc.body.parentNode.innerHTML + ''); } if (data) { self.options.afterUpload.call(self, data); } }); self.form[0].submit(); return self; }, remove : function() { var self = this; if (self.fileBox) { self.fileBox.unbind(); } // Bugfix: [IE] 上传图片后,进度条一直处于加载状态。 //self.iframe[0].src = 'javascript:false'; self.iframe.remove(); self.div.remove(); self.button.show(); return self; } }); function _uploadbutton(options) { return new KUploadButton(options); } K.UploadButtonClass = KUploadButton; K.uploadbutton = _uploadbutton;