我正在实现一个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时也会发生这种情况。在这种情况下,我也不想触发状态更改并意外地重新加载页面。
当浏览器使用后退/前进来限制侦听器的行为时,是否有任何方法可以判断状态变化是否产生?
此问题还有其他解决方法吗?