我有一个包含 iframe 的页面。iframe 可以接受用户的输入(通过按钮单击或菜单选择)并相应地显示内容。我需要的是,当用户操作 iframe 时,浏览器会将每组 iframe 参数推送到历史记录中;当用户点击后退按钮时,iframe 将使用上一个历史条目中保存的参数重新加载其内容。我有一段代码进行重新加载,如下所示。
奇怪的是,当我在 iframe 上进行多个设置时(因此多个状态条目添加到历史记录中),然后单击返回,它会像这样工作,
假设我在历史上有状态 4、3、2,而我现在处于状态 5
- 第一次单击恢复到状态 4(打印“----state changed----”日志消息
- 第二次单击会使用默认内容重新加载 iframe。不打印“----state changed----”;不调用重新加载代码。
- 第三次点击恢复到状态3
- 第四次点击就像第二次点击
- 第 5 次单击恢复到状态 2
所以每次点击成功恢复状态后,需要两次点击才能触发 popstate 事件(我也尝试过 statechanged 事件,结果相同)并恢复到另一个先前的状态。
有人知道这里发生了什么吗?提前致谢。
History.Adapter.bind(window, "popstate",
function (event) {
console.log("----state changed------", History.getState());
console.log("----state data------",History.getState().data.state);
//code to do reload an iframe to its proper state
});