[解決済み】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+で利用可能です。
関連
-
[解決済み】Javascriptのコールバック関数がFirefoxで「Callback is not a function」というエラーを投げる
-
[解決済み】Uncaught ReferenceError。Reactが定義されていない
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] JavaScriptでタイムスタンプを取得する方法は?
-
[解決済み] JavaScriptのオブジェクトが空であることをテストするにはどうすればよいですか?
-
[解決済み] JavaScriptで現在のURLを取得する?
-
[解決済み] JavaScriptでURLをエンコードする?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】node.js TypeError: path must be absolute or specify root to res.sendFile [JSONのパースに失敗しました]。
-
[解決済み】JavaScriptのボタンonclickが機能しない
-
[解決済み】SyntaxError: JSON の位置 1 に予期しないトークン o があります。
-
[解決済み】TypeError: res.status は関数ではありません。
-
[解決済み】'useState' が定義されていない no-undef React
-
[解決済み】Uncaught TypeError: 未定義のプロパティ 'msie' を読み取れない - jQuery tools
-
[解決済み】HTMLの最初の行に予期しないトークン<がある。
-
[解決済み】JavaScriptで関数が存在するかどうかを確認する方法は?
-
[解決済み] [Solved] Uncaught Invariant Violation: 前のレンダリング中よりも多くのフックをレンダリングする
-
[解決済み】URLからYouTubeのビデオIDを取得する方法は?