diff --git a/app/src/block/popover.ts b/app/src/block/popover.ts index a8355f5ee..5429e513c 100644 --- a/app/src/block/popover.ts +++ b/app/src/block/popover.ts @@ -15,6 +15,7 @@ export const initBlockPopover = (app: App) => { return; } const aElement = hasClosestByAttribute(event.target, "data-type", "a", true) || + hasClosestByAttribute(event.target, "data-type", "url") || hasClosestByAttribute(event.target, "data-type", "tab-header") || hasClosestByClassName(event.target, "ariaLabel") || hasClosestByAttribute(event.target, "data-type", "inline-memo"); @@ -207,7 +208,9 @@ export const showPopover = async (app: App, showRef = false) => { }); ids = postResponse.data; } - } else if (popoverTargetElement.getAttribute("data-type")?.split(" ").includes("a")) { + } else if ( + popoverTargetElement.getAttribute("data-type")?.split(" ").includes("a") || + popoverTargetElement.getAttribute("data-type")?.split(" ").includes("url")) { // 以思源协议开头的链接 ids = [getIdFromSYProtocol(popoverTargetElement.getAttribute("data-href"))]; } else { diff --git a/app/src/protyle/render/av/action.ts b/app/src/protyle/render/av/action.ts index 5c85a5708..1f4a9e317 100644 --- a/app/src/protyle/render/av/action.ts +++ b/app/src/protyle/render/av/action.ts @@ -116,13 +116,16 @@ export const avClick = (protyle: IProtyle, event: MouseEvent & { target: HTMLEle const linkElement = hasClosestByClassName(event.target, "av__celltext--url"); if (linkElement) { - let prefix = ""; - if (linkElement.dataset.type === "phone") { - prefix = "tel:"; - } else if (linkElement.dataset.type === "email") { - prefix = "mailto:"; - } - window.open(prefix + linkElement.textContent.trim()); + // let prefix = ""; + // if (linkElement.dataset.type === "phone") { + // prefix = "tel:"; + // } else if (linkElement.dataset.type === "email") { + // prefix = "mailto:"; + // } + // window.open(prefix + linkElement.textContent.trim()); + + let linkUrl = linkElement.getAttribute("data-href") + window.open(linkUrl.trim()); event.preventDefault(); event.stopPropagation(); return true; diff --git a/app/src/protyle/render/av/render.ts b/app/src/protyle/render/av/render.ts index 941eeece3..f0b2041d2 100644 --- a/app/src/protyle/render/av/render.ts +++ b/app/src/protyle/render/av/render.ts @@ -68,8 +68,18 @@ style="width: ${column.width || "200px"}">${getCalcValue(column) || '${cell.value?.text.content || ""}`; - } else if (["url", "email", "phone"].includes(cell.valueType)) { - text = `${cell.value ? cell.value[cell.valueType as "url"].content : ""}`; + } else if (cell.valueType === "url") { + text = `${cell.value ? cell.value[cell.valueType as "url"].content : ""}`; + if (cell.value && cell.value[cell.valueType as "url"].content) { + text += ``; + } + } else if (cell.valueType === "email") { + text = `${cell.value ? cell.value[cell.valueType as "url"].content : ""}`; + if (cell.value && cell.value[cell.valueType as "url"].content) { + text += ``; + } + } else if (cell.valueType === "phone") { + text = `${cell.value ? cell.value[cell.valueType as "url"].content : ""}`; if (cell.value && cell.value[cell.valueType as "url"].content) { text += ``; } diff --git a/app/src/protyle/wysiwyg/index.ts b/app/src/protyle/wysiwyg/index.ts index 7fec60f7f..754536a9f 100644 --- a/app/src/protyle/wysiwyg/index.ts +++ b/app/src/protyle/wysiwyg/index.ts @@ -1640,7 +1640,8 @@ 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"); + let ifaElement = hasClosestByAttribute(event.target, "data-type", "a"); + const aElement = ifaElement ? ifaElement : hasClosestByAttribute(event.target, "data-type", "url") if (blockRefElement || (aElement && aElement.getAttribute("data-href").startsWith("siyuan://blocks/")) ) {