iOS 7 Safariでは、従来の戻る/進むボタンを使用して画面の下端からスワイプするか、画面の端からスワイプすることで、前後にナビゲートする2つの方法があります。私は、私のajaxアプリケーションでページ間を移動するアニメーションを使用していますが、それはアニメーションそのものなので、ユーザーがエッジスワイプでナビゲートしている場合は、その遷移を起動したくありません。iOS 7 Safariでは、エッジスワイプとバック/フォワードボタンを使ってポップステートイベントをどのように区別しますか?
しかし、popstateイベントオブジェクトは、両方のタイプのナビゲーションで同じように見えます。これら2つのタイプのユーザーナビゲーションを区別するための方法はありますか?
UPDATE: iOS7 Safariでエッジスワイプとバックボタンのタップを正しく検出するバグを使用できました。バグは、エッジスワイプ(ただし、touchstartとtouchmoveが使用されている)を使用しているときに、touchendイベントが(次のタッチイベントまで)トリガされないということです。だからshouldAnimateフラグを設定してtouchmoveで無効にしてください。フラグが無効でポップステートが発生すると、それはエッジスワイプです。
時間の99%です - 失敗する可能性がある唯一の時間は、ユーザーが部分的にスワイプした後に移動して現在のページを元の場所に戻すときです(その時点で私のフラグはまだ無効になっています)、その後、戻るボタンをタップします(タッチイベントは発生しません)。その最後の[edge]のケースを処理するために、私は50ms後にフラグを再び有効にするためにtouchmoveにタイマーを設定しました。
はい、それは「汚い」ですが、ほとんどの場合、私が欲しいものを得ることができます。アップルがバグを修正するまでは大丈夫ですが、ポップステートイベントそれがどのような種類のナビゲーションであるかを示すオブジェクトです。
こんにちは、ソリューションのコードスニペットを提供できますか?ありがとう;) –
はい、解決策を探してここに来たので、コードスニペットを提供してください。 :) –
このバグはiOS 9.3.2で修正されていることが確認できます。 – Rockallite