history.pushState不会删除哈希

时间:2018-09-20 23:00:00

标签: hash pushstate hashchange

我正在检查网址中的哈希值。如果不存在哈希,则设置一个初始哈希(默认路由)。

if (!window.location.hash) {
  console.log("Empty hash")
  window.location.hash = '#home'
}

然后我检查哈希变化:

window.addEventListener('hashchange', () => {
    switch (window.location.hash) {
      case '#home':
        document.getElementById('app').innerHTML = layout + WelcomeHomePage();
        window.history.pushState('', '', 'home');
        break;
      case '#login':
        document.getElementById('app').innerHTML = layout + loginPage;
        window.history.pushState('', '', 'login');
        break;
      default:
        break;
    }
  })

因此,如果我单击“登录”,浏览器中的URL从/home变为/login,这正是我想要的,但是当我console.log的完整URL时,当浏览器中的网址显示http://localhost:3000/home#login时,我得到类似/login的信息。当我单击浏览器的后退按钮时,浏览器中的URL更改为/home#login

如何在路由时从网址中正确删除哈希?

0 个答案:

没有答案