IPadのSafariブラウザの左端と右端からスワイプすると、現在開いているWebページ間を移動します。それを防ぐ方法はありますか?
ページのエッジにtouchstart
ハンドラーとtouchmove
ハンドラーをstopPropagation
とpreventDefault
と追加しようとしましたが、効果がないようです。 touch-action
CSS。
同様の質問が2014年にネガティブへの返信で尋ねられました: iOS 7-Safariでスワイプの前後移動機能を無効にする方法はありますか?
2018年に回避策はありますか?
この機能を無効にする方法はないようです。そのため、回避策として、ページの両側に24pxのデッドゾーンがあれば、意図しないナビゲーションを停止するのに十分であるように見えます。
ここに私のCSSがあります:
body {
position: fixed;
top: 0;
bottom: 0;
left: 24px;
right: 24px;
background-color: #ccc;
}
体作りposition: fixed
はまた、Safariが迷惑なオーバースクロール/バウンス効果を実行するのを停止します。
AppleはiOS9の後にこれらのガイドラインを提供しました。
ガイドでは、無効にすることができます
スクロール
function touchMove(event) {
// Prevent scrolling on this element
event.preventDefault();
...
}
ピンチとズーム
function gestureChange(event) {
// Disable browser zoom
event.preventDefault();
...
}
次のようにスワイプジェスチャーを識別できます。
完全なガイドはポスター ここ です。
さらにサポートが必要な場合はお知らせください。
ニチン、 Defuzed
ナビゲーション履歴がある場合、スワイプジェスチャーでのナビゲーションが可能です。左にスワイプすると「ナビゲーション履歴の前のページに戻ります」です。
たとえば、アプリにナビゲーション履歴が必要ない場合、たとえば1画面ゲームで完全に有効な場合は、ナビゲーション履歴を削除することで、スワイプの問題を防ぐことができます。
たとえば、メモリ内の履歴のみを使用する単一ページアプリケーションがあり、ブラウザと同期していません(履歴/ URL)。そのため、「スワイプ」にこの問題を「修正」する場所はありません。
とはいえ、これは回避策であり、状況によっては十分ではない可能性があるという制限があります。 (URL共有はインターネットの基本的なものです)
ブラウザーベンダーの使命は、そのような愚かなことでWeb開発者の生活を惨めにすることです。
できません。iOSの初期の頃から問題になっています。彼らは、Service WorkerやWebGLなどの強力なWebアプリ機能に繰り返し足を引っ張っています。
あなたができる最善のことは、すべてのブラウザーで何をすべきかであり、すべてのブラウザーで機能検出を使用してできる最高の体験を作ります。すべてのサイトをすべてのブラウザーで同じに見えるようにする時代は終わりました。
必要に応じてサンドイッチを使用し、それをサポートするブラウザでサイドスワイプを許可します。残りのユーザーの利益のために、いくつかのブラウザーで小さな機能を無効にすることは恥ではありません。
<body>
タグでこれを試してください:
onload='ontouchmove()="return(function(event) { event.preventDefault(); event.stopPropagation(); return(false); } );"'
移動についてIOSを知らせないことによっていくつかの副作用があるかもしれないと想像しますが、SPWの場合、それらはおそらくわずかです。