ユーザーまたは時限イベントを通じてハッシュを動的に変更していると仮定しています。
コードを起動するために使用できる window.onhashchange イベントがあるため、ハッシュをチェックするために setTimeout を使用する必要はありません。
window.onhashchange = function(e) {
alert('Back button clicked');
}
このコードは、戻る/進むの履歴ボタンを使用するか、コードでハッシュを変更するかを問わず、ハッシュが変更されるたびに実行されます。コードでハッシュを変更したときにコードを起動させたくない場合は、if ステートメントを使用して、次の例のように前後の履歴ナビゲーションでのみ機能するようにすることができます:
https://stackoverflow.com /a/11545805/1534818
また
window.onhashchange を使用して、ハッシュに基づいてすべてのコードを実行し、onclick イベントでハッシュを変更して、コードが 1 回だけ実行されるようにすることができます。
html:
<a href='#1' class='nav'>1<a/>
<a href='#2' class='nav'>2<a/>
<a href='#3' class='nav'>3<a/>
JavaScript/jquery:
/*$('.nav').click(function() { //do this if you aren't
window.location.hash = '#' + $(this).html(); //changing the hash in your html
});*/
function getLocationHash() {
return window.location.hash.substring(1);
}
window.onhashchange = function(e) {
switch(getLocationHash()) {
case '1':
execute code block 1;
break;
case '2':
execute code block 2;
break;
case '3':
execute code block 3;
break;
default:
code to be executed if different from case 1, 2, and 3;
}
}
私は自分のサイトで何か似たようなことをしました: http://www.designhandler.com