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();
|
|||
|
|
})();
|