hash模式
| |
| |
| |
| |
| |
| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8" /> |
| <meta http-equiv="X-UA-Compatible" content="IE=edge" /> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
| <title>Hash模式</title> |
| </head> |
| <body> |
| <a href="#/home">home</a> |
| <a href="#/about">about</a> |
| <div id="content">default</div> |
| <script> |
| window.addEventListener('hashchange', () => { |
| const content = document.getElementById('content') |
| |
| window.location.hash === '#/home' |
| ? (content.innerHTML = 'home') |
| : (content.innerHTML = 'about') |
| }) |
| </script> |
| </body> |
| </html> |
| |
| |
history模式
| |
| |
| |
| |
| |
| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8" /> |
| <meta http-equiv="X-UA-Compatible" content="IE=edge" /> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
| <title>history</title> |
| </head> |
| <body> |
| <a href="/home">home</a> |
| <a href="/about">about</a> |
| <div id="content">default</div> |
| <script> |
| const content = document.getElementById('content') |
| const aEls = document.getElementsByTagName('a') |
| ;[...aEls].forEach((item) => { |
| item.addEventListener('click', (e) => { |
| |
| e.preventDefault() |
| const href = item.getAttribute('href') |
| |
| history.pushState({}, '', href) |
| |
| |
| content.innerHTML = href |
| }) |
| }) |
| </script> |
| </body> |
| </html> |
| |
- 采用链接的默认跳转,会使浏览器按照新的url,再次向服务器请求资源,而服务器下,并没有该资源,导致404错误,通过history对象操作url不会使浏览器再次向服务器请求资源
- 并且history需要在服务器环境下才可以使用,不然会报错,可以通过vscode中liveserver插件搭建一个本地服务

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?