2017-05-10 1 views
0

アニメーションスクロールバーに問題があります。意図した動作は、ナビゲーションボタンをクリックすること、ページの最後までスクロールすること(そして最後のほんの少しぶつかること)でなければなりません。 今PCの問題は完璧に動作します。アンドロイドデバイス(私は自分の電話を試しました)では、scrollTop値と($(document.body).height() - $(window).height())が一致しません。スクロールトップの正確さは55px以下で、あらゆる種類の奇妙なものを演奏しています...時には時にはうまくいきません。私はそれがブラウザバーが崩壊し、価値を怒らせることと関係があると思った...しかし、私はそれを把握することはできません。私は次の試み:スクロールイベントの変数を初期化、私は動作しなかったバニラjsを試してみました。助けが必要な場合:参照http://www.developer.morningmood.orgのために、また私はそれが役立つ場合、ページの下部に値を印刷しました。ここにコードがあります。ありがとう!jQueryのscrollTop()クロムを含むアンドロイドブラウザで奇妙なことをする

contactF = Math.floor($(document.body).height() - $(window).height()); $("#cont").click(function(){ if ($(document).scrollTop() < contactF && flagScroll==true){ //flag stops other buttons from beying pushed flagScroll = false; var inter = setInterval(function(){ var doc = $(document).scrollTop(); if (doc == contactF){ // this is the final desired position clearInterval(inter); flagScroll = true; pix = 10; //pixels to jump return; } if (doc >= contactF-50){ // this is a break on aproach pix = 1; } $(document).scrollTop(doc + pix); }, 10); } }) EDIT:また、バグを見つけるために、あなたはちょうどそれが動作する接触ボタンを押して、ページの上部からすれば、ページの最上部から下部までのすべての方法をスクロールするNEDD。しかし、スクロールしても値が狂ってしまいます。

+0

これはすべて$(document).ready(function(){})内にありますか? – Liquidchrome

+0

はい。すべてが$(document).ready関数にあります –

+0

'resize'イベントまたは 'orientationchange'イベントのイベントリスナーを追加する必要があるかもしれません。棒が崩壊すると、それらのイベントが発生し、値を再計算することができます。 – mrsq

答えて

0

同じ問題を抱えていて、一日中それを把握することができました。 あなたはAndroid Chromeのアドレスバーの崩壊について、それを混乱させています。 $(window).height()は、アドレスバーが崩壊する前のビューポートの高さを常に報告します。正しい値を取得するには、window.innerHeightを代わりに使用してください。 URLバーのサイズ変更に関する詳細はこちらhttps://developers.google.com/web/updates/2016/12/url-bar-resizing サファリアドレスバーの自動非表示に関する同様の質問をしている人もいます。解決方法は同じです。 Mobile Safari $(window).height() URL bar discrepancy

関連する問題