1

多くの人がjQuery 履歴プラグインiFrameである隠しハックを推奨しているようですが、私が本当に必要としているのは、この手法の残りの半分だけです。

function whenItemIsClicked()
    {
    window.location.hash = this.id;
    //some other stuff, like Ajax
    }

//and then, if page is reloaded...
$(document).ready(function(){
    var loc = window.location.hash;
    //if there happens to be a hash, navigate to corresponding content
    if(loc != '') $(loc).click();
});

これらはどちらもうまく機能します。今、私はこれらの2行を添付したいと思います

  var loc = window.location.hash;
  if(loc != '') $(loc).click();

イベントに、しかし、戻るボタンによって一貫してトリガーされるものはないようです。上記の手法が機能するように、現在の URL を保存するブラウザの履歴状態を追加する方法はありますか?

4

1 に答える 1

2

window.onhashchangeまだ誰もがサポートしているわけではありませんが、というイベントがありますが、その問題を解決するため の Ben Alman によるプラグインがあります。

window.onhashchangeプラグインは、(ネイティブ イベント) が存在する場合はそれを使用してクロス ブラウザーで動作させます。そうでない場合は、50 ミリ秒ごとにポーリングし、ハッシュが変更された場合にイベント自体をトリガーします。pluginを使用すると、コードは次のようになります。

$(window).hashchange(function() {
  var loc = window.location.hash;
  if(loc != '') $(loc).click();    
});

そのコードが 1 か所にあれば十分です。document.ready上記のようにバインドされた後にイベントを発生させるだけで、一度トリガーできます。

$(function(){
  $(window).hashchange();
});
于 2010-09-03T10:10:30.810 に答える