2011-11-15 11 views
1

iPadがないので私のウェブサイトをテストできませんが、私が働いている人は昨日アップルストアに行き試してみました奇妙な行動。iPad + Jqueryのスクロールが1回しか機能しなくなりました

これは横スクロールのWebサイトです。ナビゲーションをクリックすると、jqueryを使用してリンクを参照する要素にスクロールします。これは、Firefox、Chrome、IE9のいずれのコンソールエラーもなく、すべてのブラウザでうまく動作します。

iPadの問題ですが、初めての場合はリンクをクリックするとうまくいきます。スクロールしてください。しかしその後、リンクをクリックしても機能しなくなります。彼はちょうど数ピクセル動いて停止すると言った。

私はウェブサイトを表示することができないように非開示契約に署名しましたが、私はナビゲーションに結びついたコードです。ここに何か悪いことはありますか? iPadでこの種の問題を経験した人はいますか?

$("#navhome, #logo").bind('click', function(event) { 
    // Home button and the page logo send you to the #home element 
    event.preventDefault(); 
    scrollToID($("#home"), this); 
}); 

function scrollToID(id, nav) { 
    $("html, body").stop(); 
    xtarget = id.position().left; 
    $("html, body").animate({scrollLeft: xtarget}, 'slow'); 
} 

これは、これを行う方法のようです。なぜipadは何のトラブルを与えるだろうか?

私は現在Googleを閲覧していますが、私はページをリンクすることができなくてもあまり期待していません。 :/

+0

Xcodeを使用してアプリケーションをパッケージ化する場合は、シミュレータをiPadモードで使用できます。 – Jasper

+0

建設的ではありませんが、IDセレクタのコンテキストを提供する必要はありません。$( "#navhome、#logo") 'は' $( "#navhome") ' – Blazemonger

+0

に短縮することができます。xcodeはありませんが、私はipadとiphoneのシミュレータを使うことができます。 IDセレクタにはカンマがあります。 #navhomeと#logoの両方をボタンとして個別に選択しています。彼らは両方とも同じ場所に行きますが、別々のボタンです。 ありがとうございます。 –

答えて

0

同様の問題を抱えている人から電子メールを受け取った後、この問題が発生しました。

ウェブサイト全体がページの本体を引き伸ばすという問題がありました。これは、iPadのタッチコントロール(スワイプなど)でうまくいきました。しかし、これを行うことで、ナビゲーションボックスをjavascript(ギザギザ)または位置:固定(滑らかではあるが、モバイルサポートが不十分)のいずれかで移動する必要がありました。

iOS5のバグが発生しましたが、原因はまだ分かりませんが、jQueryアニメーションをスクロールし、移動中にクリック可能な要素で移動divを使用することに関連しています。

アニメーションが停止するまでナビゲーションが解除できなくなることがありますが、スクロール、ズームなどの操作を行うまでアニメーションの後でも解除できなくなることがあります。この回避策は使いやすいものではありません。

最後の解決策は、ブラウザの幅に合わせたサイズのdivにコンテンツをラップすることでした。ご存知のように、iPadや類似のタッチデバイスには、スクロールのためのネイティブタッチサポートはなく、スクロールは限られています。

もっと良い解決策があるかもしれませんが、今は私たちがdivにラッピングして、ナビゲーションを全く動かす必要がないようにしています。私たちのコンテンツだけが移動し、それ自体の中に含まれています。

1

もっとコードを投稿できますか?あなたの例は、私のiPad上でうまく動作するようです。 (iPadユーザーのための)

http://jsfiddle.net/DzyYT/

http://jsfiddle.net/DzyYT/show

私は1つのバグに気づきました。スワイプを使って横にスクロールすると、勢いよく動きます。ホームに戻るボタンをクリックしたときに画面がまだ滑っている場合、それは機能しません。

+0

私はテストに感謝します。機能は少なくとも動作することを聞いてよかったです。このスクリプトでは矛盾がありましたが、バグかどうかはわかりません。他のすべてのナビゲーションスクリプトでは、.stop(true、false)を使用してアニメーションキューをクリアします。 ipadはちょうど.stop()を使用しています。私はipadをテストする人ではなかったので、それが間違ってキューに入っていたためにほとんど動かなかったかどうかはわかりません。最初のリンクをダブルクリックしたか、または2回カウントしたタッチイベントでした。私は知らない、それを修正しようとする前にもう一度試してみる必要があります。 –

+0

私は現在の解決策をこの質問に追加しました。回答をコメントで更新する必要があると考えました。私が説明した問題があなたのテストになかった理由は、それがiOS5のバグに起因するということです。おそらく、第一世代のipad、または古いiOSバージョンと同様のものを使用していたでしょう。 –

関連する問題