对于一些网页,我们使用 iPhone 的左右滑动功能来拉出菜单。 现在有了 iOS7,他们就可以通过左右滑动的方式来回切换浏览器历史记录的上一页和下一页。
但是有没有一种方法可以对特定的页面禁用它,以避免在滑动操作上出现冲突行为?
不,这是在操作系统级别完成的,网页不会得到任何回调
见 这是 iOS7中 Safari 变化的总结,这些变化可能会给你的网站带来问题(包括这个滑动手势)
您不能直接禁用它,但只有在浏览器历史记录中有内容时,才会返回原生滑动。
它不会在任何情况下都能工作,但是如果你在一个新标签页中打开了一个网页应用,你可以通过使用
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 将实现 超滚动-行为-x,我们将能够删除 JS 黑客