From 8baf4127d54e9f34035dce1a8aa7e73c4ec2049a Mon Sep 17 00:00:00 2001 From: Theo Date: Mon, 26 Aug 2024 17:06:09 +0800 Subject: [PATCH] fix: Dynamically set target attribute based on link type, using `_blank` for external links and `_self` for internal links --- docs/guide/links.md | 4 ++-- packages/Lumen/components/DocBox.vue | 10 +++++++++- packages/Lumen/components/DocLinks.vue | 10 +++++++++- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/docs/guide/links.md b/docs/guide/links.md index b9ffbee4..243f2586 100644 --- a/docs/guide/links.md +++ b/docs/guide/links.md @@ -123,7 +123,7 @@ export default { :items="[ { name: '支付宝', - link: 'https://www.alipay.com', + link: '', icon: 'fab fa-alipay', color: '#00a1e9' }, @@ -135,7 +135,7 @@ export default { }, { name: '支付宝', - link: 'https://www.alipay.com', + link: '', icon: 'https://i.theojs.cn/logo/github.svg' }, { diff --git a/packages/Lumen/components/DocBox.vue b/packages/Lumen/components/DocBox.vue index 108f0ce2..d4e81263 100644 --- a/packages/Lumen/components/DocBox.vue +++ b/packages/Lumen/components/DocBox.vue @@ -54,6 +54,14 @@ export default defineComponent({ typeof url === 'string' && /\.(png|jpe?g|gif|svg|webp|bmp|tif?f|tiff|ico)(\?.*)?$/.test(url) ) + }, + /** + * 判断给定的链接是否是外部链接。 + * @param {string} link - 要判断的链接。 + * @returns {boolean} 如果链接是外部链接,则返回 `true`,否则返回 `false`。 + */ + isExternalLink(link: string): boolean { + return /^https?:\/\//.test(link) } } }) @@ -70,7 +78,7 @@ export default defineComponent({ :name="item.name" :title="item.name" class="box" - target="_blank" + :target="isExternalLink(item.link) ? '_blank' : '_self'" rel="noopener" >
diff --git a/packages/Lumen/components/DocLinks.vue b/packages/Lumen/components/DocLinks.vue index f26b0f1a..d9ef8d56 100644 --- a/packages/Lumen/components/DocLinks.vue +++ b/packages/Lumen/components/DocLinks.vue @@ -48,6 +48,14 @@ export default defineComponent({ typeof url === 'string' && /\.(png|jpe?g|gif|svg|webp|bmp|tif?f|tiff|ico|avif)(\?.*)?$/.test(url) ) + }, + /** + * 判断给定的链接是否是外部链接。 + * @param {string} link - 要判断的链接。 + * @returns {boolean} 如果链接是外部链接,则返回 `true`,否则返回 `false`。 + */ + isExternalLink(link: string): boolean { + return /^https?:\/\//.test(link) } } }) @@ -64,7 +72,7 @@ export default defineComponent({ :href="item.link" :name="item.name" :title="item.name" - target="_blank" + :target="isExternalLink(item.link) ? '_blank' : '_self'" rel="noopener" >