iOS 7 -有没有办法在Safari中禁用来回滑动功能?

nbysray5  于 2023-02-01  发布在  iOS
关注(0)|答案(4)|浏览(247)

对于一些网页,我们使用iPhone的左右滑动功能来调出菜单。现在在iOS7中,他们引入了通过左右滑动来返回和前进到浏览器历史记录的上一页和下一页的功能。
但是,有没有办法禁用它的特定页面,以便没有冲突的行为滑动行动?

to94eoyn

to94eoyn1#

不,这是在操作系统级别完成的,网页不会得到任何回调
参见this summary of safari changes in iOS7 that might cause problems to your website(包括此滑动手势)

0pizxfdo

0pizxfdo2#

你不能直接禁用它,但是只有当浏览器历史记录中有内容时,才会发生本机向后滑动。
此操作并非在所有情况下都有效,但如果您在新选项卡中打开了单页Web应用程序,则可通过使用来防止将其添加到历史记录中

window.history.replaceState(null, null, "#" + url)

而不是pushState或

document.location.hash = url
tkclm6bt

tkclm6bt3#

我不得不使用两种方法:

1)仅针对Chrome/Firefox的CSS修复

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黑客

bksxznpy

bksxznpy4#

如果没有历史记录,则没有滑动。

document.body.addEventListener('click', function(evt) {
  const a = evt.target.closest('a:not([href^="#"])');
    
  if (!a) { return; }

  evt.preventDefault(); 
  history.replaceState({ }, '', a.href);
  location.reload();
});

相关问题