add:光标保持

This commit is contained in:
shaoyongjun 2024-11-06 13:17:49 +08:00
parent e67eabd237
commit 39e27fe391

View File

@ -8,6 +8,7 @@ define(function (require, exports, module) {
let utils = require("../../common/utils"); let utils = require("../../common/utils");
let curS = utils.GetSelection(); let curS = utils.GetSelection();
let curRange = curS.getRangeAt(0); //只考虑一个选区场景 let curRange = curS.getRangeAt(0); //只考虑一个选区场景
let copyRange = curRange.cloneRange();
let curNode = utils.GetEventTarget(event); let curNode = utils.GetEventTarget(event);
//只处理选择的是一个范围。 //只处理选择的是一个范围。
if (curS.type !== "Range") { if (curS.type !== "Range") {
@ -129,21 +130,6 @@ define(function (require, exports, module) {
} }
curSpanContent.innerHTML = copySpan.innerHTML; curSpanContent.innerHTML = copySpan.innerHTML;
//光标保持. for 单行
if (taskMap.size === 1) {
let s = window.getSelection();
if (s.rangeCount > 0) s.removeAllRanges();
let newR = document.createRange();
//重新获取元素
let tmpP = curSpanContent;
let childrenSize = tmpP.childNodes.length;
console.log("debug007: ", tmpP, start, end, childrenSize)
newR.setStart(tmpP, start);
newR.setEnd(tmpP, end);
//区域 添加 到选区
s.addRange(newR);
}
} else { } else {
let total = 0, effectNum = 0; let total = 0, effectNum = 0;
for (let j = 0; j < curSpanContent.childNodes.length; j++) { for (let j = 0; j < curSpanContent.childNodes.length; j++) {
@ -170,6 +156,13 @@ define(function (require, exports, module) {
} }
} }
} }
//光标保持
curS.removeAllRanges();
let newR = document.createRange();
newR.setStart(copyRange.startContainer,start);
newR.setEnd(copyRange.endContainer,end);
curS.addRange(newR);
} }
function removeSpanStyleKV(span, styleK, styleV) { function removeSpanStyleKV(span, styleK, styleV) {