小编Far*_*ell的帖子

需要两次单击后退按钮才能触发popstate/statechange事件

我有一个包含iframe的页面.iframe可以获取用户的输入(通过按钮单击或菜单选择)并相应地显示内容.我需要的是,当用户操作iframe时,浏览器会将每组iframe参数推送到历史记录中; 当用户点击后退按钮时,iframe将使用上一个历史记录条目中保存的参数重新加载其内容.我有一段代码正在进行重新加载,如下所示.

奇怪的是,当我在iframe上进行多项设置(因此将多个状态条目添加到历史记录中),然后单击后面时,它会像这样工作,

假设我在历史上有状态4,3,2并且我现在处于状态5

  1. 第一次单击恢复到状态4(打印"---- state changed ----"日志消息
  2. 第二次单击会使用默认内容重新加载iframe."----状态改变----"不打印; 不调用重新加载代码.
  3. 第三次单击还原到状态3
  4. 第四次点击就像是第二次点击
  5. 第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

    }); 
Run Code Online (Sandbox Code Playgroud)

iframe history back-button popstate

5
推荐指数
1
解决办法
1694
查看次数

标签 统计

back-button ×1

history ×1

iframe ×1

popstate ×1