(サイトへのリンクは作者により削除されています)
状況は、ページに 2 つのシェブロン アンカー ( <a>
) がある場合です。(それらは JavaScript を介して DOM に追加されました) 1 つは「前へ」で、もう 1 つは「次へ」です。「次へ」アンカーをクリックすると、toNextSection()
関数がトリガーされ、ページが次のセクションにスクロールします。逆も同様です。
これはすべてのデスクトップ ブラウザーで機能しますが、iPad では奇妙です。
元々、2 つのシェブロンは「クリック」イベントにバインドされていました。次に、iPadの問題を修正するためにコードを次のように変更しようとしましたが、問題は残ります。したがって、問題はイベントの種類ではないと思います。
var clickEvent = navigator.platform.match(/iPad/i) ? 'touchstart' : 'click';
$('#sectionnav .prev a').on(clickEvent, function() { toPrevSection() });
$('#sectionnav .next a').on(clickEvent, function() { toNextSection() });
iPad の問題についてこれまでに収集した情報がいくつかあります。
- 「次へ」のシェブロンを初めてタップすると、ページは次のセクションに正常にスクロールします。ただし、その後はいずれのシェブロンもタップできなくなります。もう一度タップしても何も起こりません。
toPrevSection()
関数のすべての内容を 1 行に置き換えてみました:alert('Test');
、[前の] シェブロンをタップすると、常に警告ボックスが正常に表示されます。ただし、前述のように、「次へ」のシェブロンをタップしてページを次のセクションにスクロールした後、「前へ」のシェブロンをタップすると、警告ボックスが表示されなくなります。setInterval('toNextSection()', 10000);
または試してみsetInterval(function() { $('#sectionnav .next a').trigger('touchstart') }, 10000);
ましたが、ページは自動的に最後まで正常にスクロールできます。- 「次へ」のシェブロンをタップする前に手動でページを少し前方にスライドさせると、「次へ」のシェブロンをタップしてもページをスクロールできなくなります。
新着:
- フッターのロゴや画像など、他の要素にクリック イベントをバインドすることも試みました。そして、問題は同じです。1 回目はタップしても機能し、2 回目は何もしません。
- 「次へ」のシェブロン (またはクリック イベントにバインドされているもの) をタップしてページを次のセクションにスクロールすると、ページ上のすべてのハイパーリンクとフォーム ボタンが機能しなくなります (それらをタップしても何も起こりません)。
- ページが自動スクロールに設定されている場合 (
setInterval
上記)、ページが自動スクロールを開始する前に「次へ」のシェブロンをタップしても機能します (自動スクロールも機能します)。しかし、ページが自動スクロールを開始すると、ページ上のすべてのハイパーリンクとフォーム ボタンが機能しなくなります (それらをタップしても何も起こりません)。
どんなアドバイスでも大歓迎です。ありがとう!