1

所以我看到很多人推荐jQuery 历史插件iFrame的 hidden- hack,但我真正需要的是这项技术的另一半:

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();
});

这两个都很好用。现在,我想附上这两行

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

到一个事件,但似乎没有一个会被后退按钮一致触发。有没有办法添加浏览器历史状态以保存当前 URL,以便上述技术有效?

4

1 回答 1

2

有一个事件叫做window.onhashchange虽然不是每个人都支持它,但是...... Ben Alman 有一个插件来解决这个问题。

window.onhashchange该插件通过使用(本机事件)(如果存在)使其跨浏览器工作。如果没有,它会每 50 毫秒轮询一次,并在哈希发生变化时触发事件本身。使用插件,您的代码将如下所示:

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

你只需要在一个地方的代码。您可以document.ready通过像上面那样在绑定后触发事件来触发它一次:

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