添加新内容时滚动到页面底部(不涉及AJAX)

时间:2016-08-04 21:00:31

标签: javascript php jquery html

我有一个PHP脚本,我无法修改,它在linux机器上执行某些命令,并将stdout和stderr管道传送到网页。当请求PHP页面时,它会一直加载,直到所有命令都完成。输出显示在页面上,因为它是在linux机器上生成的。

目前,当添加新内容时,它(最终)将被添加到页面上的视图下方,以便我必须手动向下滚动才能看到它。我正在寻找一种方法来保持页面滚动到底部,或者在添加新内容时滚动。

有什么想法吗?

注意:我在18252285尝试了$('html, body').animate({scrollTop:$(document).height()}, 'slow');,但它不起作用。我在Chrome控制台中获得以下内容:

Uncaught TypeError: Cannot read property 'scrollHeight' of null

2 个答案:

答案 0 :(得分:3)

试试这个 -

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

每隔10ms后,页面将向下滚动到底部。 谢谢,如果您有任何疑虑,请告诉我。

答案 1 :(得分: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);

实施例: Incorrect Navbar Version

  

这看起来不错,但是如何终止此滚动循环?那是,   页面加载完毕后,我不希望它滚动到页面   底部自动。之后是否有一些我可以附加的js   所有的linux命令都完成了,那会停止吗? - synaptik 45分钟   前

清除间隔(停止它)你可以执行clearInterval(autoScroll); 但在你的情况下,你怎么知道页面何时完成加载?您可以使用$(document).ready(function(){ ..... });,但这实际上取决于浏览器。

因此可能需要更复杂的方法,例如拍摄加载内容的快照$(&#39; .content&#39;)。html()这会将它每秒与最新快照进行比较,看看是否是不同的。如果不是那么这意味着它完成了加载。然后你可以清除计时器。