对于某些网页,我们使用 iPhone 的左右滑动功能来拉出菜单。现在在 iOS7 中,他们引入了通过左右滑动来返回和前进浏览器历史记录的上一页和下一页的功能。
但是有没有办法为特定页面禁用它,以免在滑动操作上出现冲突行为?
不,这是在操作系统级别完成的,网页没有得到任何回调
请参阅iOS7 中可能导致您的网站出现问题的 safari 更改摘要(包括此滑动手势)
您不能直接禁用它,但只有在浏览器历史记录中有内容时才会发生本机滑动。
它并非在所有情况下都有效,但如果您在新选项卡中打开了单页 Web 应用程序,您可以使用以下方法阻止它添加到历史记录中
window.history.replaceState(null, null, "#" + url)
而不是 pushState 或
document.location.hash = url
我不得不使用两种方法:
1) CSS 仅修复 Chrome/Firefox
html, body {
overscroll-behavior-x: none;
}
2) Safari 的 JavaScript 修复
if (window.safari) {
history.pushState(null, null, location.href);
window.onpopstate = function(event) {
history.go(1);
};
}
随着时间的推移,Safari 将实现overscroll-behavior-x,我们将能够移除 JS hack