class SidebarRedirect { menuList = []; constructor() { this.init(); } init() { this.reWriteUrlFunction(); window.addEventListener("pushState", e => { setTimeout(() => { const list = this.getMenuList(); this.redirect(list); }); }); window.onload = () => { const list = this.getMenuList(); this.redirect(list); }; } getMenuList() { const menuList = [...document.querySelectorAll(".sidebar .sidebar-link")]; return menuList; } redirect(list) { const len = list.length; if (len === 1) { console.log(list[0]); location.replace(list[0].href); } } reWriteUrlFunction() { const _historyWrap = function (type) { const orig = history[type]; const e = new Event(type); return function () { const rv = orig.apply(this, arguments); e.arguments = arguments; window.dispatchEvent(e); return rv; }; }; history.pushState = _historyWrap("pushState"); history.replaceState = _historyWrap("replaceState"); } } export default new SidebarRedirect();