31 lines
1.0 KiB
JavaScript
31 lines
1.0 KiB
JavaScript
/* =====================================================================
|
||
* 入口(main.js)
|
||
* 挂载全局事件并完成首次渲染。
|
||
* 各业务模块:api / auth / router / article / comment / manage / friend /
|
||
* markdown / state / utils
|
||
* ===================================================================== */
|
||
|
||
import { $ } from "./utils.js";
|
||
import { refreshUser } from "./auth.js";
|
||
import { navigate, render, renderAuthArea, renderNav } from "./router.js";
|
||
|
||
// 拦截站内 SPA 链接(带 data-link 的 <a>),并收起用户下拉菜单
|
||
document.addEventListener("click", (e) => {
|
||
const link = e.target.closest("a[data-link]");
|
||
if (link) {
|
||
e.preventDefault();
|
||
navigate(link.getAttribute("href"));
|
||
return;
|
||
}
|
||
const dropdown = $("#user-dropdown");
|
||
if (dropdown && !e.target.closest(".user-menu")) dropdown.classList.add("hidden");
|
||
});
|
||
|
||
window.addEventListener("popstate", render);
|
||
|
||
(async function init() {
|
||
renderNav();
|
||
await refreshUser();
|
||
renderAuthArea();
|
||
render();
|
||
})(); |