jScrollPane은 기본 브라우저 스크롤 막대를 수정하는 멋진 jQuery 플러그인입니다. jScrollPane을 사용할 채팅 응용 프로그램을 개발 중입니다. 지금까지 최대 스크롤 높이를 결정할 수 없다는 점을 제외하고는 훌륭하게 작동합니다. 여기 내가 뭘하려고하는지 :jScrollPane에서 최대 스크롤 높이를 얻는 방법?
$(function()
{
$('#chatPane').jScrollPane();
var api = $('#chatPane').data('jsp');
setInterval(function()
{
$.ajax(
{
url: "Home/GetMessage",
type: "POST",
success: function (response)
{
// This next line is where the issue occurs. I need to check if the current scroll position is equal to the max scroll position. This is to implement the auto scroll if the user has scrolled to the bottom of the chat.
var atBottom = (api.getContentPane().getContentPositionY() == api.getContentPane().getMaxScrollHeight()??????);
api.getContentPane().append(response);
api.reinitialise();
if (atBottom)
api.scrollToBottom();
},
error: function (xhr, textStatus, errorThrown)
{
alert(textStatus);
}
});
}, 1000);
});
getMaxScrollHeight가 존재하지 않습니다. 최대 스크롤 높이를 결정하는 방법이 필요합니다.
편집 : 다음과 같이 ajax success 함수가 변경되었습니다. 그러나 누군가가 아래쪽으로 스크롤하고, 현재 위치를 얻은 다음 이전 위치로 스크롤하는 것보다 더 나은 방법을 알고 있다면 크게 감사 할 것입니다. 당신이 시도 할 수
success: function (response)
{
var currentPosition = api.getContentPositionY();
api.scrollToBottom();
var maxPosition = api.getContentPositionY();
api.scrollToY(currentPosition);
var atBottom = (currentPosition == maxPosition);
api.getContentPane().append(response);
api.reinitialise();
if (atBottom)
api.scrollToBottom();
}
흥미로운 아이디어입니다. 어떻게 scrollToBottom(), 어떤 아이디어를 시뮬레이션 할 것이라고? – Chev
두 가지 방법을 생각해 볼 수 있습니다. 첫 번째는 페이지의 실제 개체와 동일한 속성을 가진 메모리 내 Javascript 복사본을 만들고이 개체에서 명령을 실행하는 것입니다. 두 번째 방법은 현재 스크롤 위치를 저장하고 라이브 개체에 대해 명령을 실행 한 다음 이전 스크롤 위치를 복원하는 것입니다. 이로 인해 UI가 점프 할 수 있으므로 사용 가능한지 테스트하기 위해 UI를 테스트해야합니다. – ChessWhiz
두 번째로 할 수있는 일이지만, UI 점프가 발생할 가능성이 높습니다. 인 메모리 개체를 생성하기위한 코드 샘플로 답변을 업데이트 할 수 있습니까? – Chev