将此归类为“我无法相信以前没有人注意到这一点”或“我一定是错过了什么”的类别:
似乎如果在iOS上执行简单的window.history.pushState
,除非它是响应于用户手势,否则位置栏不会更新。状态本身已被推送(您可以通过点击返回按钮看到)。
这是我能想出来重新创建问题的最小测试用例:
http://thelink.is/history-api-ios-bug
在支持History API的桌面浏览器中,您应该看到每秒钟URL在位置栏中更改为/0、/1等。在iOS上——使用iPhone(运行iOS 4.3)和iPad(运行iOS 4.3.3)进行测试——位置栏不会更新,但点击返回按钮将带您到正确的前一个位置(在测试用例上将404,因为没有后端逻辑处理这些URL)。
有什么想法?解决方法?需要抱怨和拥抱吗?
更新:此问题已在iOS 5中修复。