From 8688278e02031d3bdf50ee56cabb4ad5e024511e Mon Sep 17 00:00:00 2001 From: "tangly1024.com" Date: Tue, 4 Mar 2025 13:54:46 +0800 Subject: [PATCH] =?UTF-8?q?gallery=E8=A7=86=E5=9B=BE=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E6=9B=BF=E6=8D=A2url?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/ExternalPlugins.js | 2 +- lib/notion/convertInnerUrl.js | 22 ++++++++++++++++++---- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/components/ExternalPlugins.js b/components/ExternalPlugins.js index c2bf54d5..4e1f7072 100644 --- a/components/ExternalPlugins.js +++ b/components/ExternalPlugins.js @@ -165,7 +165,7 @@ const ExternalPlugin = props => { } setTimeout(() => { - // 映射url + // 将notion-id格式的url转成自定义slug convertInnerUrl(props?.allNavPages) }, 500) }, [router]) diff --git a/lib/notion/convertInnerUrl.js b/lib/notion/convertInnerUrl.js index 017bebd1..b8e5cb0f 100644 --- a/lib/notion/convertInnerUrl.js +++ b/lib/notion/convertInnerUrl.js @@ -1,6 +1,6 @@ +import { loadLangFromLocalStorage } from '@/lib/lang' import { idToUuid } from 'notion-utils' import { checkStrIsNotionId, getLastPartOfUrl, isBrowser } from '../utils' -import { loadLangFromLocalStorage } from '@/lib/lang' /** * 处理页面内连接跳转: @@ -13,12 +13,13 @@ export const convertInnerUrl = allPages => { } const allAnchorTags = document ?.getElementById('notion-article') - ?.querySelectorAll('a.notion-link') + ?.querySelectorAll('a.notion-link, a.notion-collection-card') if (!allAnchorTags) { return } - const { origin, pathname } = window.location; + + const { origin, pathname } = window.location const currentURL = origin + pathname const currentPathLang = pathname.split('/').filter(Boolean)[0] const lang = loadLangFromLocalStorage().split(/[-_]/)[0] @@ -49,5 +50,18 @@ export const convertInnerUrl = allPages => { anchorTag.target = '_self' } } + + // 如果链接以#号结尾,则强制在新窗口打开 + if (anchorTag.href.endsWith('#')) { + anchorTag.target = '_blank' + } } -} \ No newline at end of file + for (const anchorTag of allAnchorTags) { + const slug = getLastPartOfUrl(anchorTag.href) + const slugPage = allPages?.find(page => { + return page.slug.indexOf(slug) >= 0 + }) + if (slugPage) { + } + } +}