无法在 history.js 数据中包含函数

Unable to include functions in history.js data

我有一个单页 Web 应用程序,我正在尝试向其添加 history.js 支持。现在,无论用户在哪个屏幕上,URL 都保持不变。我的计划是使用 History.pushState() 来更改 URL 并包含一个函数,该函数在执行时将应用程序从任何地方导航到新屏幕。这是我拥有的:

History.Adapter.bind(window, 'statechange', function() {
  var State = History.getState();
  console.log(State);
  State.data.navigate();
  History.log('statechange:', State.data, State.title, State.url);
});

// later

History.pushState({page: 'page1', navigate: function() {
  navigateToPage1();
}}, 'Page 1', '?page1');

问题是,当我在 statechange 事件处理程序中检索它时,我添加到 data 对象的任何函数都消失了。有没有我可以使用的解决方法,或者我是否必须有大量的 switch(State.data.page) 声明?

我最终重新设计了应用程序以支持 history.js。从长远来看,运行 无论如何,这将是更易于维护的选择。