是否有History.pushstate的回调?

时间:2012-05-02 18:52:02

标签: javascript html5 html5-history

我的Google-fu一无所获。

执行此操作时:

var stateObj = { state: "some state" };
history.pushState(stateObj, "page 2", "other.htm");

是否存在关联的窗口回调?

我知道就是这样:

window.onpopstate = function() {

}

当用户点击后退按钮时,该功能非常适合收听。但是,我想在任何时候听到URL的变化,我不知道该怎么做。

网址更改时是否有全局回调?

1 个答案:

答案 0 :(得分:20)

不,没有onpushstate或其他什么。但是,一点猴子修补可以解决这个问题:

var pushState = history.pushState;
history.pushState = function () {
    pushState.apply(history, arguments);
    fireEvents('pushState', arguments);  // Some event-handling function
};

这只会在使用pushState时通知您。你可能想为replaceState做类似的事情。

如果您需要在URL发生任何变化时收到通知,上面的一些组合和一个hashchange处理程序将为您提供最大的帮助。