From e96e9021f3cb654cbd46104c17583b2b25104d40 Mon Sep 17 00:00:00 2001 From: Vanessa Date: Wed, 17 Apr 2024 20:26:56 +0800 Subject: [PATCH] :art: fix https://github.com/siyuan-note/siyuan/issues/11073 --- app/src/protyle/render/av/action.ts | 49 ----------------------------- app/src/protyle/wysiwyg/index.ts | 16 ++++++++-- 2 files changed, 14 insertions(+), 51 deletions(-) diff --git a/app/src/protyle/render/av/action.ts b/app/src/protyle/render/av/action.ts index 595784b50..430140964 100644 --- a/app/src/protyle/render/av/action.ts +++ b/app/src/protyle/render/av/action.ts @@ -59,55 +59,6 @@ export const avClick = (protyle: IProtyle, event: MouseEvent & { target: HTMLEle event.stopPropagation(); return true; } - const urlElement = hasClosestByClassName(event.target, "av__celltext--url"); - if (urlElement) { - let linkAddress = urlElement.textContent.trim(); - if (urlElement.dataset.type === "phone") { - linkAddress = "tel:" + linkAddress; - } else if (urlElement.dataset.type === "email") { - linkAddress = "mailto:" + linkAddress; - } else if (urlElement.classList.contains("b3-chip")) { - linkAddress = urlElement.dataset.url; - } - /// #if !MOBILE - const suffix = pathPosix().extname(linkAddress); - const ctrlIsPressed = isOnlyMeta(event); - if (Constants.SIYUAN_ASSETS_EXTS.includes(suffix)) { - if (event.altKey) { - openAsset(protyle.app, linkAddress.trim(), parseInt(getSearch("page", linkAddress))); - } else if (ctrlIsPressed) { - /// #if !BROWSER - openBy(linkAddress, "folder"); - /// #else - openByMobile(linkAddress); - /// #endif - } else if (event.shiftKey) { - /// #if !BROWSER - openBy(linkAddress, "app"); - /// #else - openByMobile(linkAddress); - /// #endif - } else { - openAsset(protyle.app, linkAddress.trim(), parseInt(getSearch("page", linkAddress)), "right"); - } - } else { - /// #if !BROWSER - if (ctrlIsPressed) { - openBy(linkAddress, "folder"); - } else { - openBy(linkAddress, "app"); - } - /// #else - openByMobile(linkAddress); - /// #endif - } - /// #else - openByMobile(linkAddress); - /// #endif - event.preventDefault(); - event.stopPropagation(); - return true; - } const imgElement = hasClosestByClassName(event.target, "av__cellassetimg"); if (imgElement) { previewImage((imgElement as HTMLImageElement).src); diff --git a/app/src/protyle/wysiwyg/index.ts b/app/src/protyle/wysiwyg/index.ts index 7ec4908e8..e5aa000df 100644 --- a/app/src/protyle/wysiwyg/index.ts +++ b/app/src/protyle/wysiwyg/index.ts @@ -1985,8 +1985,20 @@ export class WYSIWYG { const range = getEditorRange(this.element); // 需放在嵌入块之前,否则嵌入块内的引用、链接、pdf 双链无法点击打开 https://ld246.com/article/1630479789513 const blockRefElement = hasClosestByAttribute(event.target, "data-type", "block-ref"); - const aElement = hasClosestByAttribute(event.target, "data-type", "a") || hasClosestByAttribute(event.target, "data-type", "url"); - const aLink = aElement ? aElement.getAttribute("data-href") : ""; + const aElement = hasClosestByAttribute(event.target, "data-type", "a") || + hasClosestByClassName(event.target, "av__celltext--url"); // 数据库中资源文件、链接、电话、邮箱单元格 + let aLink = aElement ? aElement.getAttribute("data-href") : ""; + if (aElement && !aLink && aElement.classList.contains("av__celltext--url")) { + aLink = aElement.textContent.trim(); + if (aElement.dataset.type === "phone") { + aLink = "tel:" + aLink; + } else if (aElement.dataset.type === "email") { + aLink = "mailto:" + aLink; + } else if (aElement.classList.contains("b3-chip")) { + aLink = aElement.dataset.url; + } + } + if (blockRefElement || aLink.startsWith("siyuan://blocks/")) { event.stopPropagation(); event.preventDefault();