From 5340461a7e879e2605db785602be90d1e6d7e30b Mon Sep 17 00:00:00 2001 From: Phoenix <64720302+Concur-max@users.noreply.github.com> Date: Mon, 9 Jun 2025 14:46:33 +0800 Subject: [PATCH] =?UTF-8?q?fix(utils):=20=E4=BF=AE=E5=A4=8Dwujie=E7=8E=AF?= =?UTF-8?q?=E5=A2=83=E4=B8=8B=E5=89=AA=E8=B4=B4=E6=9D=BF=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E5=85=BC=E5=AE=B9=E6=80=A7=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改clipboardImage方法以支持wujie微前端环境,使用主应用的navigator.clipboard对象 同时优化canvas图片绘制参数,确保图片缩放正确 --- src/utils/common.js | 11 ++++++++--- src/views/message/inner/panel/PanelContent.vue | 2 +- vite.config.ts | 6 +++--- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/utils/common.js b/src/utils/common.js index 788490c..dfc0718 100644 --- a/src/utils/common.js +++ b/src/utils/common.js @@ -68,6 +68,11 @@ export function clipboard(text, callback) { } export async function clipboardImage(src, callback) { + // 在wujie环境下使用主应用的clipboard + const clipboardObj = window.__POWERED_BY_WUJIE__ + ? window.parent.navigator.clipboard + : navigator.clipboard + const { state } = await navigator.permissions.query({ name: 'clipboard-write' }) @@ -80,7 +85,7 @@ export async function clipboardImage(src, callback) { // navigator.clipboard.write 仅支持 png 图片 if (blob.type == 'image/png') { - await navigator.clipboard.write([ + await clipboardObj.write([ new ClipboardItem({ [blob.type]: blob }) @@ -99,13 +104,13 @@ export async function clipboardImage(src, callback) { canvas.width = img.width canvas.height = img.height - ctx.drawImage(img, 0, 0) + ctx.drawImage(img, 0, 0, canvas.width, canvas.height) canvas.toBlob( (blob) => { const data = [new ClipboardItem({ [blob.type]: blob })] - navigator.clipboard + clipboardObj .write(data) .then(() => { callback() diff --git a/src/views/message/inner/panel/PanelContent.vue b/src/views/message/inner/panel/PanelContent.vue index b4d2df7..36f3146 100644 --- a/src/views/message/inner/panel/PanelContent.vue +++ b/src/views/message/inner/panel/PanelContent.vue @@ -124,7 +124,7 @@ const onCopyText = (data: ITalkRecord) => { return clipboard(htmlDecode(data.extra.content), () => useMessage.success('复制成功')) } } - + console.log('data.extra?.url',data.extra?.url) if (data.extra?.url) { return clipboardImage(data.extra.url, () => { useMessage.success('复制成功') diff --git a/vite.config.ts b/vite.config.ts index 83a792e..715bc77 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -46,9 +46,9 @@ export default defineConfig(({ mode }) => { vueJsx({}), compressPlugin(), UnoCSS(), - vueDevTools({ - launchEditor: 'trae', - }) + // vueDevTools({ + // launchEditor: 'trae', + // }) ], define: { __APP_ENV__: env.APP_ENV