iOS 7 - 有没有办法在Safari中禁用滑动后退和前进功能?

Meg*_*haK 75 safari ios ios7

对于某些网页,我们使用iPhone的左右滑动功能来拉取菜单.现在使用iOS7,他们已经引入了在向左和向右滑动的情况下返回到前一页和下一页浏览器历史记录的功能.

但有没有办法为特定页面禁用它,以便在滑动操作上没有冲突的行为?

Vin*_*zzz 15

不,这是在操作系统级别完成的,并且网页没有得到任何回调

查看iOS7中可能导致您网站出现问题的safari更改摘要(包括此滑动手势)


Tom*_*son 12

您不能直接禁用它,但只有在浏览器历史记录中有某些内容时才会发生本机滑动.

它不适用于所有情况,但如果您在新标签页中打开了单页网页应用,则可以阻止它通过使用添加到历史记录中

window.history.replaceState(null, null, "#" + url)
Run Code Online (Sandbox Code Playgroud)

而不是pushState或

document.location.hash = url
Run Code Online (Sandbox Code Playgroud)

  • 是的,但这样可以防止导航时应用程序本身的历史记录.其他应用程序也可能推动了历史记录,因此iOS也会检测这些历史记录. (3认同)

Joh*_*rty 5

我不得不使用2种方法:

1)CSS仅适用于Chrome / Firefox

html, body {
    overscroll-behavior-x: none;
}
Run Code Online (Sandbox Code Playgroud)

2)Safari的JavaScript修复

if (window.safari) {
    history.pushState(null, null, location.href);
    window.onpopstate = function(event) {
        history.go(1);
    };
}
Run Code Online (Sandbox Code Playgroud)

随着时间的推移,Safari将实现overscroll-behavior-x,我们将能够删除JS hack

  • 但是仍然有可能有人通过单击另一个网站上的链接(即,如果该网站链接到您的应用程序)来打开您的应用程序。要解决此问题,您仍然必须通过`touchmove` 事件检测滑动手势,并且只有在*未*紧跟滑动之前才执行上述代码。应该是可以的。 (2认同)