如何在不刷新页面的情况下改变URL

主要有两种方式

第一种
  • 改 window.location.hash 优点是:没有任何的BUG
    小栗子 :
<button id="x">x</button>
<button id="y">y</button>
<div id="动态区域"></div>
<script>
  x.onclick = function () {
    // 动态区域.innerText = 'xxxxxxxxxxx'
    window.location.hash = 'x'
  }
  y.onclick = function () {
    window.location.hash = 'y'
  }
  // x.onclick = function () {
  //   // alert('1')
  //   window.location.hash = "wangyx"
  // }
  //点击当前按钮 动态展示当前hash及内容
  window.onhashchange = function () {
    var hash = window.location.hash
    展示内容(hash)
  }
//当hash为空的时候 默认展示 x的内容 当前连接 hash被复制也会展示当前内容 
  var hash = window.location.hash
  if (hash === '') {
    window.location.hash = 'x'
  } else {
    展示内容(hash)
  }

  function 展示内容(hash) {
    if (hash === '#x') {
      动态区域.innerText = 'xxxxxxxxxxx'
    } else if (hash === '#y') {
      动态区域.innerText = 'yyyyyyyyyyyy'
    }
  }
第二种

window.history.pushState()
优点: 更优雅 。缺点:刷新就会 404 解决方式 :让后端支持模糊匹配的路由
小栗子 :

<button id="x">x</button>
<button id="y">y</button>
<div id="动态区域"></div>
<script>
  x.onclick = function () {
    window.history.pushState('', 'x页面', '/URL-demo-2.html/x')
  }
  y.onclick = function () {
    window.history.pushState('', 'y页面', '/URL-demo-2.html/y')
  }
</script>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 我们先大致来了解一下javascript的内容,然后由浅入深的来学习,进一步提升对WEB前端技术的兴趣。 如何插入...
    yezi1004阅读 5,189评论 0 0
  • 原文:https://zhuanlan.zhihu.com/p/27588422 本文由浅入深观摩vue-rout...
    PixelEyes阅读 4,278评论 0 1
  • 本文由浅入深观摩vue-router源码是如何通过hash与History interface两种方式实现前端路由...
    world_7735阅读 5,152评论 0 10
  •   ECMAScript 是 JavaScript 的核心,但如果要在 Web 中使用 JavaScript,那么...
    霜天晓阅读 4,373评论 0 0
  • 现代家庭工作模式 中国式大城市现代家庭的工作状态普遍现象为贫穷忙碌,少有结余。现代化大都市中较高的医疗教育成本,再...
    钨丝灯阅读 2,701评论 0 0

友情链接更多精彩内容