diff options
author | Aleksander Machniak <alec@alec.pl> | 2013-03-08 08:49:57 +0100 |
---|---|---|
committer | Aleksander Machniak <alec@alec.pl> | 2013-03-08 08:51:03 +0100 |
commit | 527e7d45092a1efb9f72664210a591be0a6b2c2d (patch) | |
tree | eb49897cb3a85c83bff10d83b9bbd73d24227009 /program/js | |
parent | 91deac7c91e18bfa0e94715cd2966699588fad35 (diff) |
Fix javascript errors when working in a page opened with taget="_blank"
Diffstat (limited to 'program/js')
-rw-r--r-- | program/js/app.js | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/program/js/app.js b/program/js/app.js index ab8eb2369..41781b9e2 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -3038,10 +3038,10 @@ function rcube_webmail() input_message = $("[name='_message']").get(0), html_mode = $("input[name='_is_html']").val() == '1', ac_fields = ['cc', 'bcc', 'replyto', 'followupto'], - ac_props; + ac_props, opener_rc = this.opener(); // close compose step in opener - if (window.opener && !window.opener.closed && opener.rcmail && opener.rcmail.env.action == 'compose') { + if (opener_rc && opener_rc.env.action == 'compose') { setTimeout(function(){ opener.history.back(); }, 100); this.env.opened_extwin = true; } @@ -3720,9 +3720,10 @@ function rcube_webmail() this.display_message(msg, type); if (this.env.extwin) { + var opener_rc = this.opener(); this.lock_form(this.gui_objects.messageform); - if (window.opener && !window.opener.closed && opener.rcmail) - opener.rcmail.display_message(msg, type); + if (opener_rc) + opener_rc.display_message(msg, type); setTimeout(function(){ window.close() }, 1000); } else { @@ -6601,6 +6602,17 @@ function rcube_webmail() /********* helper methods *********/ /********************************************************/ + // get window.opener.rcmail if available + this.opener = function() + { + // catch Error: Permission denied to access property rcmail + try { + if (window.opener && !opener.closed && opener.rcmail) + return opener.rcmail; + } + catch (e) {} + }; + // check if we're in show mode or if we have a unique selection // and return the message uid this.get_single_uid = function() |