From a25dedf81146d931fbb107e6571ea3f349c99663 Mon Sep 17 00:00:00 2001 From: dribble-njr Date: Thu, 21 Nov 2024 11:32:37 +0800 Subject: [PATCH] fix: ensure SVG elements are included in copy --- src/components/CodemirrorEditor/EditorHeader/index.vue | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/components/CodemirrorEditor/EditorHeader/index.vue b/src/components/CodemirrorEditor/EditorHeader/index.vue index 28d106f..dc88269 100644 --- a/src/components/CodemirrorEditor/EditorHeader/index.vue +++ b/src/components/CodemirrorEditor/EditorHeader/index.vue @@ -125,7 +125,17 @@ function copy() { .replaceAll(`var(--el-text-color-regular)`, `#3f3f3f`) .replaceAll(`var(--md-primary-color)`, primaryColor.value) .replaceAll(/--md-primary-color:.+?;/g, ``) + clipboardDiv.focus() + + // edge case: 由于 svg 无法复制, 在前面插入一个空节点 + const p = document.createElement(`p`) + p.style.fontSize = `0` // 设置字体大小为 0 + p.style.lineHeight = `0` // 行高也为 0 + p.style.margin = `0` // 避免外边距干扰 + p.innerHTML = ` ` + clipboardDiv.insertBefore(p, clipboardDiv.firstChild) + window.getSelection()!.removeAllRanges() const range = document.createRange()