0

このサンプル JavaScript コードで戻るボタン イベントを検出しようとしています。

document.location.hash="#1";
document.location.hash="#2";
document.location.hash="#3";

function check() {
    if("#3"!=window.location.hash) {
        alert("Back button clicked");
    }
    setTimeout(check, 100);
}
check();

FF と Chrome では動作しますが、IE では window.location.hash は常に "#3" ですが、[戻る] ボタンをクリックして、アドレス バーの URL が #2、#1 にどのように変化するかを監視しています。

前後に押した後に変更されているときに、IEにハッシュの変更を表示させる方法はありますか?

4

1 に答える 1

0

ユーザーまたは時限イベントを通じてハッシュを動的に変更していると仮定しています。

コードを起動するために使用できる 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

于 2012-07-18T16:51:16.463 に答える