mirror of
https://github.com/d0zingcat/NotionNext.git
synced 2026-05-14 07:26:52 +00:00
41 lines
1.4 KiB
JavaScript
41 lines
1.4 KiB
JavaScript
import { uuidToId } from 'notion-utils'
|
||
import { checkStrIsNotionId, getLastPartOfUrl, isBrowser } from '../utils'
|
||
|
||
/**
|
||
* 处理页面内连接跳转:
|
||
* 1. 若是本站域名,则在当前窗口打开、不开新窗口
|
||
* 2. 若是Notion笔记中的内链,尝试转换成博客中现有的文章地址
|
||
*/
|
||
export const mapPageUrl = allPages => {
|
||
if (isBrowser) {
|
||
const currentURL = window.location.origin + window.location.pathname
|
||
const allAnchorTags = document.getElementsByTagName('a') // 或者使用 document.querySelectorAll('a') 获取 NodeList
|
||
for (const anchorTag of allAnchorTags) {
|
||
// 检查url
|
||
if (anchorTag?.href) {
|
||
// 如果url是一个Notion_id,尝试匹配成博客的文章内链
|
||
const slug = getLastPartOfUrl(anchorTag.href)
|
||
if (checkStrIsNotionId(slug)) {
|
||
const slugPage = allPages?.find(page => uuidToId(page.id) === slug)
|
||
if (slugPage) {
|
||
anchorTag.href = slugPage?.href
|
||
}
|
||
}
|
||
}
|
||
|
||
if (anchorTag?.target === '_blank') {
|
||
const hrefWithoutQueryHash = anchorTag.href.split('?')[0].split('#')[0]
|
||
const hrefWithRelativeHash =
|
||
currentURL.split('#')[0] + anchorTag.href.split('#')[1]
|
||
|
||
if (
|
||
currentURL === hrefWithoutQueryHash ||
|
||
currentURL === hrefWithRelativeHash
|
||
) {
|
||
anchorTag.target = '_self'
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|