From 718af6f7fa8929babc1b6eea993f2352ebb32c3c Mon Sep 17 00:00:00 2001 From: Gnome Ann <> Date: Wed, 13 Oct 2021 12:41:43 -0400 Subject: [PATCH] Pasting fallback for browsers with no execCommand support --- static/application.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/static/application.js b/static/application.js index 9b584508..374cdf25 100644 --- a/static/application.js +++ b/static/application.js @@ -1044,7 +1044,17 @@ function chunkOnPaste(event) { if(event.originalEvent.clipboardData && document.queryCommandSupported && document.execCommand && document.queryCommandSupported('insertText')) { event.preventDefault(); document.execCommand('insertHTML', false, event.originalEvent.clipboardData.getData('text/plain').replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"').replace(/'/g, ''').replace(/\n/g, '
')); - } + } else if (event.originalEvent.clipboardData) { + event.preventDefault(); + var s = getSelection(); // WARNING: Do not use rangy.getSelection() instead of getSelection() + var r = s.getRangeAt(0); + r.deleteContents(); + var nodes = Array.from($('' + event.originalEvent.clipboardData.getData('text/plain').replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"').replace(/'/g, ''').replace(/\n/g, '
') + '
')[0].childNodes); + for(var i = 0; i < nodes.length; i++) { + r.insertNode(nodes[i]); + r.collapse(false); + } + } } // This gets run every time the caret moves in the editor