-
IIFE 包裹 (避免全局变量污染)
- 使用立即执行函数表达式 (IIFE) 包裹代码,避免全局变量污染。
-
初始化
initialize()
:初始化所有功能-
initDarkmode()
:初始化深色模式插件 -
initHomeBtn()
:初始化返回首页按钮 -
initAboutBtn()
:初始化关于按钮 -
文档解析功能:
initContent()
:初始化页面内容showMarkdown()
:更新页面的 Markdown 内容getPValue()
:获取 URL 参数p
的值decodeMDPath()
:将 URL 参数p
转换为绝对路径formatMDPath()
:格式化路径getMarkdown()
:读取并解析指定的 Markdown 文件marked.parse()
:解析 Markdown- 处理内部链接
- 更新页面内容
customPushState()
:自定义推送浏览器历史状态
-
initTranslate()
:初始化翻译系统 -
initPJAX()
:初始化 PJAX,实现页面无刷新加载 -
初始化自定义 PJAX:
initCustomPJAXResponse()
: 覆写 PJAX 处理响应的函数,实现 Markdown 渲染。initCustomPJAXEventListener()
: 初始化自定义 PJAX 事件监听器,处理点击事件。
-
-
事件监听
DOMContentLoaded
事件:网页加载完毕后触发初始化- 调用
initialize()
函数
- 调用
pjax:send
事件:PJAX 开始时执行的函数startLoad()
:开始加载动画
pjax:complete
事件:监听 PJAX 完成后initCustomPJAX()
:重新加载内容
click
事件委托- 返回上一页 (
#back-btn
):调用window.history.back()
- 刷新页面 (
#refresh-btn
):调用window.location.reload()
- 切换深色模式 (
#dark_b
):调用darkmode.toggle()
- 切换语言 (
#translate-switch
):调用translate.changeLanguage()
- 返回上一页 (
showMarkdownEnded()
函数:文档内容加载完毕时触发refreshTranslate()
:刷新翻译infoTranslate()
:检查并提示翻译translate.execute()
:执行翻译endLoad()
:结束加载动画- 添加
loaded
类 - 平滑滚动到顶部:调用
window.scrollTo()
onpopstate
事件:浏览器返回时触发- 更新层级 (
level
)
- 更新层级 (
-
加载动画相关
startLoad()
:开始加载动画,显示加载进度条endLoad()
:结束加载动画,隐藏加载进度条
-
文档解析功能
getPValue()
:获取 URL 参数p
的值getDirectory()
:获取文件所在目录getPath()
:获取当前页面的 Markdown 文件路径decodeMDPath()
:将 URL 参数p
转换为绝对路径formatMDPath()
:格式化路径isRelativePath()
:判断路径是否为相对路径handleError()
:处理加载错误,显示错误信息showMarkdown()
:更新页面的 Markdown 内容getMarkdown()
:读取并解析指定的 Markdown 文件marked.parse()
:解析 Markdown- 处理内部链接
generateOutline()
:生成目录结构
-
PJAX 相关
initPJAX()
:初始化 PJAXinitCustomPJAXResponse()
:覆写 PJAX 处理响应的函数initCustomPJAXEventListener()
:初始化自定义 PJAX 事件监听器
-
深色模式相关
initDarkmode()
:初始化深色模式插件
-
翻译系统
initTranslate()
:初始化翻译系统infoTranslate()
:检查并提示翻译refreshTranslate()
:刷新翻译translate.execute()
:执行翻译
-
自定义推送状态
customPushState()
:自定义推送浏览器历史状态
-
初始化内容
initContent()
:初始化页面内容showMarkdown()
:更新页面的 Markdown 内容
-
初始化按钮
initHomeBtn()
:初始化返回首页按钮initAboutBtn()
:初始化关于按钮