web-dev-qa-db-ja.com

iOS 7-Safariのスワイプバックアンドフォワード機能を無効にする方法はありますか?

一部のWebページでは、iPhoneの左右のスワイプ機能を使用してメニューを表示します。 iOS7では、左右にスワイプすることで、ブラウザー履歴の前のページと次のページに前後に移動する機能が導入されました。

しかし、スワイプ操作で動作が競合しないように、特定のページで無効にする方法はありますか?

75
MeghaK

いいえ、これはOSレベルで行われ、ウェブページはコールバックを取得しません

このWebサイトに問題を引き起こす可能性のあるiOS7でのサファリの変更の概要 (このスワイプジェスチャーを含む)を参照してください

15
Vinzzz

直接無効にすることはできませんが、ブラウザの履歴に何かがある場合にのみネイティブスワイプバックが発生します。

すべてのケースで機能するわけではありませんが、新しいタブで単一ページのWebアプリを開いている場合は、次を使用して履歴に追加しないようにすることができます

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

pushStateまたは

document.location.hash = url
12
Tom Clarkson

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ハックを削除できるようになります

4
John Doherty