出于测试目的,我想用一些条目填充历史记录。更准确地说,我想添加 X 项来禁用浏览器的后退按钮,因为即使用户单击 X 次,他也会停留在同一页面上。
我正在按照以下方式执行此操作:
(function (){
for (var x = 0; x < 10; x++) {
history.pushState(null, document.title, location.pathname);
}
}());
因此,当页面被加载时,当前页面的 10 个元素被注入(inject)到历史记录中。这种方法适用于所有支持历史 API 的浏览器iOS 上的 Chrome 除外!!!
使用上面的代码,iOS(7 到 10)上的 Chrome 做了一些非常奇怪的事情:
- 它将选项卡中的标题替换为当前页面的 url(因此,选项卡标题中显示的不是“my great webpage”,而是“mygreatpage.com/samplepage1”
- 长按后退按钮检查条目,Chrome 不显示额外添加的条目 - 每个其他浏览器显示 10 个额外的条目,如上面的代码所预期的那样
Safari 和所有其他 iOS 浏览器都按照我的意愿行事。 我做错了什么?
最佳答案
对于 iOS 原生的 chrome history.pushState 被额外的扩展覆盖,如果你 alert(history.pushState)
你可以看到它不是我们在其他浏览器上看到的原生代码
下面的 polyfill 可能对你有帮助,
关于javascript - iOS Chrome 上的 HTML5 历史 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42166164/