From 3456d511714c4e83b182b10511b4e69673856342 Mon Sep 17 00:00:00 2001 From: yanglbme Date: Mon, 23 Dec 2024 11:27:59 +0800 Subject: [PATCH] fix: copy svg --- .../CodemirrorEditor/EditorHeader/index.vue | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/components/CodemirrorEditor/EditorHeader/index.vue b/src/components/CodemirrorEditor/EditorHeader/index.vue index c64249df1..6d8fdf403 100644 --- a/src/components/CodemirrorEditor/EditorHeader/index.vue +++ b/src/components/CodemirrorEditor/EditorHeader/index.vue @@ -64,6 +64,15 @@ const copyMode = useStorage(addPrefix(`copyMode`), `txt`) const source = ref(``) const { copy: copyContent } = useClipboard({ source }) +const creatEmptyNode = () => { + const node = document.createElement(`p`) + node.style.fontSize = `0` + node.style.lineHeight = `0` + node.style.margin = `0` + node.innerHTML = ` ` + return node +} + // 复制到微信公众号 function copy() { emit(`startCopy`) @@ -107,13 +116,11 @@ function copy() { 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) + // 由于 svg 无法复制, 在前后各插入一个空白节点 + const beforeNode = creatEmptyNode() + const afterNode = creatEmptyNode() + clipboardDiv.insertBefore(beforeNode, clipboardDiv.firstChild) + clipboardDiv.appendChild(afterNode) // 兼容 Mermaid const nodes = clipboardDiv.querySelectorAll(`.nodeLabel`)