diff --git a/src/client/core/utils/content-editable.js b/src/client/core/utils/content-editable.js index 786b9cca63..7590521e38 100644 --- a/src/client/core/utils/content-editable.js +++ b/src/client/core/utils/content-editable.js @@ -285,15 +285,23 @@ export function getNearestCommonAncestor (node1, node2) { //selection utils function getSelectedPositionInParentByOffset (node, offset) { + let currentNode = null; + let currentOffset = null; + const childNodes = nativeMethods.nodeChildNodesGetter.call(node); + const childCount = domUtils.getChildNodesLength(childNodes); + let isSearchForLastChild = offset >= childCount; + // NOTE: we get a child element by its offset index in the parent if (domUtils.isShadowUIElement(node)) return { node, offset }; - let currentNode = childNodes[offset]; - let currentOffset = 0; - const childNodes = nativeMethods.nodeChildNodesGetter.call(node); - const childCount = domUtils.getChildNodesLength(childNodes); - let isSearchForLastChild = offset >= childCount; + // NOTE: IE behavior + if (isSearchForLastChild) + currentNode = childNodes[childCount - 1]; + else { + currentNode = childNodes[offset]; + currentOffset = 0; + } // NOTE: skip shadowUI elements if (domUtils.isShadowUIElement(currentNode)) {