如何在不刷新页面内容的情况下,仅通过改变浏览器的访问地址URL实现页面跳转?

更新于
2026-10-09 10:15:09
2阅读来源:SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计604个文字,预计阅读时间需要3分钟。

如何在不刷新页面内容的情况下,仅通过改变浏览器的访问地址URL实现页面跳转?

浏览器修改URL内容,不刷新页面:

1-1 不刷新页面,修改浏览器访问地址的方式:

- 1-1-1 通过query参数修改:location.search='?page=2';- 1-1-2 通过hash修改:window.location.hash='www.zhihu.com'; 若原地址是 http://1

如何在不刷新页面内容的情况下,仅通过改变浏览器的访问地址URL实现页面跳转?

浏览器改变url 1 改变浏览器访问地址的方式 1-1 不刷新页面内容,改变浏览器访问地址url 1-1-1 query param

location.search = '?page=2'; 1-1-2 hash

window.location.hash = 'www.zhihu.com'

如果 原地址 是 127.0.0.1/noliebe/template.html
运行 window.location.hash = 'www.zhihu.com' 后
url地址将变为 127.0.0.1/noliebe/template.html#www.zhihu.com

1-1-3 replaceState

window.history.replaceState(undefined, '', nU) // 参数 nU 应该是历史记录实体的 URL. 新的 URL 跟当前的 URL 必须是同源; 否则 replaceState 抛出一个异常。

如果 原地址 是 127.0.0.1/noliebe/template.html

运行 window.history.replaceState(undefined, '', '/box') 后
url地址将变为 127.0.0.1/box
且不会从新地址重新加载页面,也不会留下访问记录
再举一个栗子
用户在 www/aaa 下点击了登录,跳转到了 www/login
login页面运行了 window.history.replaceState(undefined, '', '/box')
此时url地址是 www/box,但页面内容是 www/login 的内容
用户如果点击浏览器的返回按钮,url 地址将会是 www/aaa, 页面内容还是 www/login 的内容
只有主域 www 变了的时候,浏览器才会重新从超链接加载页面数据
参考 developer.mozilla.org/zh-CN/docs/Web/API/History/replaceState

1-1-3 pushState

window.history.pushState(undefined, '', nU)

pushState 大致同 replaceState, 但是会留下访问记录。
改一下之前的栗子
用户在 www/aaa 下点击了登录,跳转到了 www/login
login页面运行了 window.history.pushState(undefined, '', '/box')
此时url地址是 www/box,但页面内容是 www/login 的内容
用户如果点击浏览器的返回按钮,url 地址将会是 www/login, 页面内容还是 www/login 的内容
只有主域 www 变了的时候,浏览器才会重新从超链接加载页面数据
参考 developer.mozilla.org/en-US/docs/Web/API/History/pushState

/** *in the end *我们正改变着我们的世界.. */

本文共计604个文字,预计阅读时间需要3分钟。

如何在不刷新页面内容的情况下,仅通过改变浏览器的访问地址URL实现页面跳转?

浏览器修改URL内容,不刷新页面:

1-1 不刷新页面,修改浏览器访问地址的方式:

- 1-1-1 通过query参数修改:location.search='?page=2';- 1-1-2 通过hash修改:window.location.hash='www.zhihu.com'; 若原地址是 http://1

如何在不刷新页面内容的情况下,仅通过改变浏览器的访问地址URL实现页面跳转?

浏览器改变url 1 改变浏览器访问地址的方式 1-1 不刷新页面内容,改变浏览器访问地址url 1-1-1 query param

location.search = '?page=2'; 1-1-2 hash

window.location.hash = 'www.zhihu.com'

如果 原地址 是 127.0.0.1/noliebe/template.html
运行 window.location.hash = 'www.zhihu.com' 后
url地址将变为 127.0.0.1/noliebe/template.html#www.zhihu.com

1-1-3 replaceState

window.history.replaceState(undefined, '', nU) // 参数 nU 应该是历史记录实体的 URL. 新的 URL 跟当前的 URL 必须是同源; 否则 replaceState 抛出一个异常。

如果 原地址 是 127.0.0.1/noliebe/template.html

运行 window.history.replaceState(undefined, '', '/box') 后
url地址将变为 127.0.0.1/box
且不会从新地址重新加载页面,也不会留下访问记录
再举一个栗子
用户在 www/aaa 下点击了登录,跳转到了 www/login
login页面运行了 window.history.replaceState(undefined, '', '/box')
此时url地址是 www/box,但页面内容是 www/login 的内容
用户如果点击浏览器的返回按钮,url 地址将会是 www/aaa, 页面内容还是 www/login 的内容
只有主域 www 变了的时候,浏览器才会重新从超链接加载页面数据
参考 developer.mozilla.org/zh-CN/docs/Web/API/History/replaceState

1-1-3 pushState

window.history.pushState(undefined, '', nU)

pushState 大致同 replaceState, 但是会留下访问记录。
改一下之前的栗子
用户在 www/aaa 下点击了登录,跳转到了 www/login
login页面运行了 window.history.pushState(undefined, '', '/box')
此时url地址是 www/box,但页面内容是 www/login 的内容
用户如果点击浏览器的返回按钮,url 地址将会是 www/login, 页面内容还是 www/login 的内容
只有主域 www 变了的时候,浏览器才会重新从超链接加载页面数据
参考 developer.mozilla.org/en-US/docs/Web/API/History/pushState

/** *in the end *我们正改变着我们的世界.. */