From 2f13a28c9854e3eb5147db2aea2f3cc310acf9ef Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Tue, 21 Jun 2016 15:37:52 +0200 Subject: [PATCH] Added handling of contenteditable issues for ff. --- .../app/lib/base/jquery.contenteditable.js | 45 ++++++++++++++----- 1 file changed, 34 insertions(+), 11 deletions(-) diff --git a/app/assets/javascripts/app/lib/base/jquery.contenteditable.js b/app/assets/javascripts/app/lib/base/jquery.contenteditable.js index a0ce7c66c..2dea08d3a 100644 --- a/app/assets/javascripts/app/lib/base/jquery.contenteditable.js +++ b/app/assets/javascripts/app/lib/base/jquery.contenteditable.js @@ -59,6 +59,12 @@ this.preventInput = false + // detect firefox / handle contenteditable issues + this.browser = undefined + if ( navigator && navigator.userAgent && navigator.userAgent.search('Firefox') != -1) { + this.browser = 'ff' + } + this.init(); } @@ -104,18 +110,35 @@ document.execCommand('Outdent') return } + } - // ff issue, inserts

inside of
  • - not content can be inserted - // to reproduce - // 1. ctrl+alt+l - // 2. 1+enter, 2+enter, 3+enter, 4+enter - // 3. use arrows to move after 2, press enter, press arrow down, press enter - // 4. no content can be inserted anymore in this area - // see also https://github.com/martini/zammad/issues/176 - if (node.context && node.context.localName == 'ul') { - e.preventDefault() - document.execCommand('insertHTML', false, '

    ') - console.log('ff issue, inserts

    inside of
  • - not content can be inserted anymore in this area') + // return & space key being pressed + if (e.keyCode === 13 ) { + + if (_this.browser === 'ff') { + + // ff issue, inserts

    right after contenteditable tag (still in ff47) + // https://bugzilla.mozilla.org/show_bug.cgi?id=911201 + if (node.parent().hasClass('js-textarea')) { + e.preventDefault() + document.execCommand('insertHTML', false, '

    ') + console.log('ff issue, inserts

    ->

    ') + return + } + + // ff issue, inserts

    inside of
  • - not content can be inserted + // to reproduce + // 1. ctrl+alt+l + // 2. 1+enter, 2+enter, 3+enter, 4+enter + // 3. use arrows to move after 2, press enter, press arrow down, press enter + // 4. no content can be inserted anymore in this area + // see also https://github.com/martini/zammad/issues/176 + if (node.context && node.context.localName == 'ul') { + e.preventDefault() + document.execCommand('insertHTML', false, '

    ') + console.log('ff issue, inserts

    inside of
  • - not content can be inserted anymore in this area') + return + } } }