From 5c78f9fa6b5c960c76084c4ba7f2ac219c4ea15a Mon Sep 17 00:00:00 2001 From: Vanessa Date: Sun, 16 Jul 2023 22:00:49 +0800 Subject: [PATCH] :art: range position --- app/src/protyle/util/selection.ts | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/app/src/protyle/util/selection.ts b/app/src/protyle/util/selection.ts index 265a4ed39..155035ed9 100644 --- a/app/src/protyle/util/selection.ts +++ b/app/src/protyle/util/selection.ts @@ -174,9 +174,19 @@ export const getSelectionPosition = (nodeElement: Element, range?: Range) => { if (range.getClientRects().length === 0) { if (range.startContainer.nodeType === 3) { // 空行时,会出现没有 br 的情况,需要根据父元素

获取位置信息 - const parent = range.startContainer.parentElement; - if (parent && parent.getClientRects().length > 0) { - cursorRect = parent.getClientRects()[0]; + const parentRects = range.startContainer.parentElement?.getClientRects(); + // 连续粘贴图片时 + const previousRects = (range.startContainer as Element).previousElementSibling?.getClientRects(); + if (parentRects.length > 0 || previousRects.length > 0) { + if (parentRects.length === 0 || (previousRects && + previousRects.length > 0 && parentRects[0].top < previousRects[previousRects.length - 1].bottom)) { + cursorRect = { + left: previousRects[previousRects.length - 1].left, + top: previousRects[previousRects.length - 1].bottom, + }; + } else { + cursorRect = parentRects[0]; + } } else { return { left: 0,