一部のWebページでは、iPhoneの左右のスワイプ機能を使用してメニューを表示します。 iOS7では、左右にスワイプすることで、ブラウザー履歴の前のページと次のページに前後に移動する機能が導入されました。
しかし、スワイプ操作で動作が競合しないように、特定のページで無効にする方法はありますか?
いいえ、これはOSレベルで行われ、ウェブページはコールバックを取得しません
このWebサイトに問題を引き起こす可能性のあるiOS7でのサファリの変更の概要 (このスワイプジェスチャーを含む)を参照してください
直接無効にすることはできませんが、ブラウザの履歴に何かがある場合にのみネイティブスワイプバックが発生します。
すべてのケースで機能するわけではありませんが、新しいタブで単一ページのWebアプリを開いている場合は、次を使用して履歴に追加しないようにすることができます
window.history.replaceState(null, null, "#" + url)
pushStateまたは
document.location.hash = url
2つのアプローチを使用する必要がありました。
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ハックを削除できるようになります