小编典典

如何检测 JavaScript 中的哈希后 URL 是否已更改

all

如何检查 JavaScript 中的 URL 是否已更改?例如,使用 AJAX 的 GitHub 等网站将在 # 符号后附加页面信息以创建唯一的
URL,而无需重新加载页面。检测此 URL 是否更改的最佳方法是什么?

  • onload是否再次调用该事件?
  • URL 是否有事件处理程序?
  • 还是必须每秒检查一次 URL 以检测更改?

阅读 105

收藏
2022-06-18

共1个答案

小编典典

在现代浏览器(IE8+、FF3.6+、Chrome)中,您只需hashchangewindow.

在一些旧浏览器中,您需要一个不断检查location.hash. 如果您使用的是
jQuery,那么有一个插件可以做到这一点。

例子

下面我撤消任何 URL 更改,以保持滚动:

<script type="text/javascript">
  if (window.history) {
    var myOldUrl = window.location.href;
    window.addEventListener('hashchange', function(){
      window.history.pushState({}, null, myOldUrl);
    });
  }
</script>

请注意 ,上面使用history的 -API 在 Chrome、Safari、Firefox 4+ 和 Internet Explorer
10pp4+ 中可用

2022-06-18