\s*\[\^([^\]]+)\]:\s*([\s\S]*?)<\/p>/g, function(_, id, content) { return '

' + content + ' ↩'; }); } catch (e) { /* 忽略 */ } next(html); }); hook.doneEach(function () { try { // 重新绑定点击事件,拦截脚注链接,平滑滚动到同页目标 var prev = window.__footnoteContainer; var prevHandler = window.__footnoteHandler; if (prev && prevHandler) { prev.removeEventListener('click', prevHandler, true); } var container = document.querySelector('.markdown-section'); if (!container) return; var handler = function (e) { var a = e.target && e.target.closest ? e.target.closest('a') : null; if (!a) return; var href = a.getAttribute('href') || ''; if (!/^#(fn-|fnref-)/.test(href)) return; var targetId = href.slice(1); var el = document.getElementById(targetId); if (!el) return; e.preventDefault(); e.stopPropagation(); try { el.scrollIntoView({ behavior: 'smooth', block: 'start' }); } catch (_) { el.scrollIntoView(true); } }; container.addEventListener('click', handler, true); window.__footnoteContainer = container; window.__footnoteHandler = handler; } catch (e) { // 忽略脚注绑定中的异常 } }); }, // 语言切换插件 function(hook, vm) { hook.mounted(function() { // 添加语言切换按钮到导航栏 var nav = document.querySelector('.app-nav'); if (!nav) { nav = document.createElement('nav'); nav.className = 'app-nav'; document.querySelector('main').appendChild(nav); } var langSwitcher = document.createElement('ul'); langSwitcher.innerHTML = `