1. ホーム
  2. ジャバスクリプト

[解決済み】JavaScriptでハッシュ後にURLが変更されたかどうかを検出する方法

2022-04-10 09:51:43

質問

JavaScriptでURLが変更されたかどうかを確認するにはどうすればよいですか?例えば、GitHubのようなAJAXを使用するウェブサイトでは、#マークの後にページ情報を付加して、ページを再読み込みせずに一意のURLを作成することができます。このURLが変更されたかどうかを検出するには、どのような方法があるでしょうか?

  • onload イベントが再び呼び出されましたか?
  • URLに対応したイベントハンドラはありますか?
  • それとも、変更を検出するために、1秒ごとにURLをチェックしなければならないのでしょうか?

解決方法は?

モダンブラウザ(IE8+、FF3.6+、Chrome)であれば、そのまま hashchange イベント window .

一部の古いブラウザでは、常に 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+で利用可能です。