8

我在我的代码中使用带有 jQ​​uery 的 History.js ( click )。

通过 ajax 加载新内容时,我使用:

History.pushState({my:stateobject},"newtitle","supernewurl");

这似乎有效,因为 URL 已在浏览器中更新。

但是,只要按下后退或前进按钮,我就无法连接我的代码。为此使用哪种方法/事件?

4

3 回答 3

9

您需要将事件处理程序绑定到statechange事件,如下所示:

$(window).bind('statechange',function(){
// Do something, inspect History.getState() to decide what
})

History.js 附带了一个完整的 javascript 片段,可用于完全“ajaxify”一个站点:https ://github.com/browserstate/ajaxify

看看那里以获得更多灵感。

于 2012-07-13T19:53:00.360 回答
4

您不会捕获返回单击事件,因为没有。

您要做的是使用, ,方法确保history对象处于正确状态。window.history.pushStatewindow.history.popStatewindow.history.replaceState

https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history

于 2012-07-07T23:24:04.457 回答
2

我能够使用“onPopState”事件来触发我的自定义 AJAX 代码。

window.onpopstate = function(event) {
  $(fellowModal).foundation('reveal', 'close');
};

我尝试了其他几件事,这对我有用。

于 2013-10-08T16:47:15.587 回答