たとえば、次のような URL があるとします: http://yoursite.com/#stackoverflow
アドレスバーに新しいハッシュを入力すると、ページ上でその ID を見つけようとします。そのブラウザのアクティビティを検出し、その URL でページを強制的にリロードする方法はありますか (おそらく JavaScript を使用しますか?)。
ありがとう!
たとえば、次のような URL があるとします: http://yoursite.com/#stackoverflow
アドレスバーに新しいハッシュを入力すると、ページ上でその ID を見つけようとします。そのブラウザのアクティビティを検出し、その URL でページを強制的にリロードする方法はありますか (おそらく JavaScript を使用しますか?)。
ありがとう!
hashchange
イベントにバインドする必要があります。
window.onhashchange = function() {
window.location.reload();
};
ただし注意してください: 一部の古いブラウザーはこのイベントをサポートしていないため (これを参照)、これらのブラウザーにはポリフィルが必要です。
古いブラウザの例とポーリング手法を次に示します。
if ('onhashchange' in window) {
window.onhashchange = function() {
window.location.reload();
};
} else {
var hash = window.location.hash;
setInterval(function() {
if (window.location.hash !== hash) {
window.location.reload();
}
}, 100);
}
hashchange
新しいブラウザでは、 eventを使用できます。実際、それに対するサポートはかなり良いです。location.hash
古いブラウザーでは、 (setInterval
または などを使用して) をポーリングする必要がありますsetTimeout
。