2016-08-04 1 views
0

수정할 수없는 PHP 스크립트가있어서 리눅스 컴퓨터에서 일부 명령을 실행하고 stdout 및 stderr을 웹 페이지로 파이프합니다. PHP 페이지가 요청되면 모든 명령이 완료 될 때까지로드됩니다. 출력은 리눅스 머신에서 생성 될 때 페이지에 나타납니다.새로운 내용 추가시 페이지 하단으로 스크롤

현재 새 콘텐츠가 추가되면 볼 수 있도록 수동으로 아래로 스크롤해야하므로 (결국) 페이지의보기 아래에 추가됩니다. 페이지를 맨 아래로 스크롤하거나 새로운 내용이 추가 될 때마다 스크롤하는 방법을 찾고 있습니다.

아이디어가 있으십니까?

참고 : $('html, body').animate({scrollTop:$(document).height()}, 'slow');18252285에서 시도했지만 작동하지 않습니다. 나는 크롬 콘솔에서 다음을 얻을 :

Uncaught TypeError: Cannot read property 'scrollHeight' of null 
+0

('html, body') 가짜로 보입니다. 하나를 시도 했습니까, 아니면 다른 하나를 시도 했습니까? –

답변

3

당신은 스크롤을하여 setInterval 수 있습니다,이 바닥

var simulateServerOutput = window.setInterval(function() { 
    var $newElem = $('<div/>', { 
    'html': Math.random().toString(36).substring(7) 
    }).appendTo('.content'); 
}, 1000); 


var autoScroll = window.setInterval(function() { 
    var $target = $('html,body'); 
    $target.animate({scrollTop: $target.height()}, 1000); 
}, 500); 

예에 스크롤 페이지를 유지합니다 : https://jsfiddle.net/byLc06ez/1/

이 좋아 보인다,하지만 어떻게 내가이 스크롤 루프를 종료 할 것인가? 즉, 페이지로드가 완료된 후 이 표시되면 페이지가 자동으로 하단의 으로 스크롤되는 것을 원하지 않습니다. 모든 리눅스 명령이 끝나면 끝까지 추가 할 수있는 js가 있습니까? - synaptik 45 분

간격 (중지) 그냥 페이지로드가 완료되면 당신이 알고 어떻게 구분 clearInterval(autoScroll); 을 실행하지만 당신의 수를 지 웁니다

전에? 당신은 $(document).ready(function(){ ..... });을 사용할 수 있습니다. 그러나 이것은 실제로 브라우저에 따라 다릅니다.

로드 된 컨텐츠 $ ('. content') .html()의 스냅 샷을 찍는 것과 같이 매 초마다 최신 스냅 샷과 비교하고 다른 스냅 샷과 비교하는 등 더 복잡한 접근이 필요할 수 있습니다. 그렇지 않으면로드가 완료되었음을 의미합니다. 타이머를 지울 수 있습니다.

+0

이것은 좋아 보이지만이 스크롤 루프를 어떻게 종료합니까? 즉, 페이지로드가 완료된 후 페이지가 자동으로 아래로 스크롤되는 것을 원하지 않습니다. 끝까지 추가 할 수있는 js가 있습니까? 모든 Linux 명령이 끝나면이 작업이 중지됩니다. – synaptik

+0

업데이트를 참조하십시오. –

3

이 시도 - 10ms마다 후

setInterval(function() { 
    window.scrollTo(0,document.body.scrollHeight); 
}, 10); 

, 페이지가 아래로 스크롤됩니다. 감사의 말씀 감사합니다.

관련 문제