Skip to content

Commit 04298bb

Browse files
muanmarijnh
authored andcommitted
Fix IE11 pasting losing line breaks
- walk child of [cm-text] if [cm-text] is empty in order to find line breaks - treat br/li/table as blocks - always addText from on textNode not node.textContent
1 parent 7677433 commit 04298bb

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

src/input/ContentEditableInput.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -413,8 +413,8 @@ function domTextBetween(cm, from, to, fromLine, toLine) {
413413
function walk(node) {
414414
if (node.nodeType == 1) {
415415
let cmText = node.getAttribute("cm-text")
416-
if (cmText != null) {
417-
addText(cmText || node.textContent.replace(/\u200b/g, ""))
416+
if (cmText) {
417+
addText(cmText)
418418
return
419419
}
420420
let markerID = node.getAttribute("cm-marker"), range
@@ -425,13 +425,15 @@ function domTextBetween(cm, from, to, fromLine, toLine) {
425425
return
426426
}
427427
if (node.getAttribute("contenteditable") == "false") return
428-
let isBlock = /^(pre|div|p)$/i.test(node.nodeName)
428+
let isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName)
429+
if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) return
430+
429431
if (isBlock) close()
430432
for (let i = 0; i < node.childNodes.length; i++)
431433
walk(node.childNodes[i])
432434
if (isBlock) closing = true
433435
} else if (node.nodeType == 3) {
434-
addText(node.nodeValue.replace(/\u00a0/g, " "))
436+
addText(node.nodeValue.replace(/\u00a0/g, " ").replace(/\u200b/g, ""))
435437
}
436438
}
437439
for (;;) {

0 commit comments

Comments
 (0)