From a41aaf3352fe0d69f662132d8e70885993ed4d9a Mon Sep 17 00:00:00 2001 From: Aleksander Machniak <alec@alec.pl> Date: Thu, 12 Jun 2014 13:18:07 -0400 Subject: [PATCH] Move some code to legacy_browser plugin --- plugins/legacy_browser/js/iehacks.js | 10 ++++++++++ program/js/app.js | 29 ++++++++++++----------------- 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/plugins/legacy_browser/js/iehacks.js b/plugins/legacy_browser/js/iehacks.js index 91dc6d6..8f88e6f 100644 --- a/plugins/legacy_browser/js/iehacks.js +++ b/plugins/legacy_browser/js/iehacks.js @@ -96,3 +96,13 @@ return {start: start, end: end, text: normalizedValue.substr(start, end-start)}; }; + +// For IE<9 we have to do it this way +// otherwise the form will be posted to a new window +rcube_webmail.prototype.async_upload_form_frame = function(name) +{ + document.body.insertAdjacentHTML('BeforeEnd', '<iframe name="' + name + '"' + + ' src="program/resources/blank.gif" style="width:0; height:0; visibility:hidden"></iframe>'); + + return $('iframe[name="' + name + '"]'); +}; diff --git a/program/js/app.js b/program/js/app.js index 499e2a2..9909a02 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -7497,8 +7497,10 @@ // post the given form to a hidden iframe this.async_upload_form = function(form, action, onload) { - var frame, ts = new Date().getTime(), - frame_name = 'rcmupload'+ts; + // create hidden iframe + var ts = new Date().getTime(), + frame_name = 'rcmupload' + ts, + frame = this.async_upload_form_frame(frame_name); // upload progress support if (this.env.upload_progress_name) { @@ -7513,21 +7515,7 @@ field.val(ts); } - // have to do it this way for IE - // otherwise the form will be posted to a new window - if (document.all) { - document.body.insertAdjacentHTML('BeforeEnd', '<iframe name="'+frame_name+'"' - + ' src="program/resources/blank.gif" style="width:0;height:0;visibility:hidden;"></iframe>'); - frame = $('iframe[name="'+frame_name+'"]'); - } - // for standards-compliant browsers - else { - frame = $('<iframe>').attr('name', frame_name) - .css({border: 'none', width: 0, height: 0, visibility: 'hidden'}) - .appendTo(document.body); - } - - // handle upload errors, parsing iframe content in onload + // handle upload errors by parsing iframe content in onload frame.bind('load', {ts:ts}, onload); $(form).attr({ @@ -7540,6 +7528,13 @@ return frame_name; }; + // create iframe element for files upload + this.async_upload_form_frame = function(name) + { + return $('<iframe>').attr({name: name, style: 'border: none; width: 0; height: 0; visibility: hidden'}) + .appendTo(document.body); + }; + // html5 file-drop API this.document_drag_hover = function(e, over) { -- Gitblit v1.9.1