fix: 协同下懒加载报错问题

This commit is contained in:
yanmao 2021-12-18 13:58:27 +08:00
parent bf181d4772
commit 8bbb9d0dc4
2 changed files with 21 additions and 15 deletions

View File

@ -539,11 +539,7 @@ class Producer extends EventEmitter2 {
}, },
); );
// 没有这个卡片节点,或者卡片内部已经渲染了才需要过滤 // 没有这个卡片节点,或者卡片内部已经渲染了才需要过滤
if ( if (result && !result.rendered) {
result &&
!result.rendered &&
cardElement.attributes(CARD_LOADING_KEY) !== 'remote'
) {
isTransient = false; isTransient = false;
record['nl'] = true; record['nl'] = true;
} else { } else {

View File

@ -71,17 +71,27 @@ class RangeColoring implements RangeColoringInterface {
range: RangeInterface, range: RangeInterface,
style: DrawStyle, style: DrawStyle,
) { ) {
let startOffset = range.startOffset; const { startOffset, startNode, endNode } = range;
while (startOffset < range.endOffset) { let start = range.startOffset;
range.setStart(range.commonAncestorContainer, startOffset); const endOffset = range.endOffset;
range.setEnd(range.commonAncestorContainer, startOffset + 1); let startTop = range.getClientRect().top;
const rect = this.getRectWithRange(node, range); let drawOffset = startOffset;
canvas.clearRect(rect); while (start < endOffset) {
canvas.drawRect({ ...rect.toJSON(), ...style }); range.setStart(range.commonAncestorContainer, start);
startOffset++; range.setEnd(range.commonAncestorContainer, start + 1);
const curRect = range.getClientRect();
if (curRect.top > startTop || start === endOffset - 1) {
range.setStart(range.commonAncestorContainer, drawOffset);
drawOffset = start;
startTop = curRect.top;
const rect = this.getRectWithRange(node, range);
canvas.clearRect(rect);
canvas.drawRect({ ...rect.toJSON(), ...style });
}
start++;
} }
range.setStart(range.startContainer, range.startOffset); range.setStart(startNode, startOffset);
range.setEnd(range.endContainer, range.endOffset); range.setEnd(endNode, endOffset);
} }
drawBackground( drawBackground(