メッセージを受け取り下に追加していくアプリです(Lineのような)
HTML
1<div id="log"> 2ここにメッセージが追加されます。 3</div>
javascript
1//自動更新 2$(function(){ 3 function buildMESSAGE(message) { 4 var messages = $('#log').append('<div class="messages" data-id=' + message.id + '><p>' + message.content + '</p></div>'); 5 } 6 7 8 //スクロール検出 9 // スクロールさせる要素を取得 10 var elm = document.getElementById('log'); 11 12 // 要素の表示領域を取得 13 var height = elm.offsetHeight; 14 var scrollHeight = elm.scrollHeight; 15 16 // 要素のスクロール位置を取得 17 var scrollTop = elm.scrollTop; 18 19 // 現在の表示位置の高さ 20 var scrollPosition = height + scrollTop; 21 22 // どれだけ近づいたかを判断する値 23 // 0に近いほど、スクロールの最終が近い 24 var proximity = 0; 25 26 27 $(function(){ 28 setInterval(update, 10000); 29 }); 30 function update(){ 31 if($('.messages')[0]){ 32 var message_id = $('.messages:last').data('id'); 33 } else { 34 var message_id = 0 35 } 36 $.ajax({ 37 url: location.href, 38 type: 'GET', 39 data: { 40 message: { id: message_id } 41 }, 42 dataType: 'json' 43 }) 44 .always(function(data){ 45 $.each(data, function(i, data){ 46 buildMESSAGE(data); //buildMESSAGEを呼び出す 47 48 //****↓質問はこのポイントです。**** 49 if ((scrollHeight - scrollPosition) / scrollHeight <= 0) { 50 処理 51 }; 52 }); 53 }); 54 } 55});
質問したい所は、ajaxでメッセージを受信した時の処理です。
if文分岐したいのですが、
一番下にスクロールバーがある状態でメッセージを受け取ったら処理をする。
それ以外なら処理は行わない としたいのですが、if文が間違っているのか、
どの位置にスクロールバーがあっても処理が行われてしまいます。
スクロールバーの位置の取得が間違っているのかと思われるのですが、
調べ試したのですが全く同じでどの状況でも処理されてしまいました。
正しいjavascriptでページの下からの位置を取得する方法を教えてください。
回答2件
あなたの回答
tips
プレビュー