history.js区分不同的状态变化

时间:2019-12-20 13:25:21

标签: javascript jquery browser browser-history history.js

我正在实现一个AJAX仪表板:当用户使用侧栏进行导航时,将加载相应的页面。我正在使用history.js更新URL,以便可以识别和共享页面:

// this is done when the page is loaded (clicking the sidebar link or any other way)
History.pushState({page: page}, pageTitle, pageURL);

为了支持浏览器来回转发动作,我介绍了以下内容:

// this load the corresponding page in the history when using the back/forwwards browser buttons
History.Adapter.bind(window, 'statechange', function () {
    const State = History.getState();
    PageMap[State.data.page].load();
});

问题:每当加载页面时,状态就会被推到历史记录,这会触发statechange事件,该事件再次加载页面。导致同一请求两次被提出。

将查询参数添加到URL时也会发生这种情况。在这种情况下,我也不想触发状态更改并意外地重新加载页面。

当浏览器使用后退/前进来限制侦听器的行为时,是否有任何方法可以判断状态变化是否产生?

此问题还有其他解决方法吗?

0 个答案:

没有答案