我有一个PHP脚本,我无法修改,它在linux机器上执行某些命令,并将stdout和stderr管道传送到网页。当请求PHP页面时,它会一直加载,直到所有命令都完成。输出显示在页面上,因为它是在linux机器上生成的。
目前,当添加新内容时,它(最终)将被添加到页面上的视图下方,以便我必须手动向下滚动才能看到它。我正在寻找一种方法来保持页面滚动到底部,或者在添加新内容时滚动。
有什么想法吗?
注意:我在18252285尝试了$('html, body').animate({scrollTop:$(document).height()}, 'slow');
,但它不起作用。我在Chrome控制台中获得以下内容:
Uncaught TypeError: Cannot read property 'scrollHeight' of null
答案 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);
这看起来不错,但是如何终止此滚动循环?那是, 页面加载完毕后,我不希望它滚动到页面 底部自动。之后是否有一些我可以附加的js 所有的linux命令都完成了,那会停止吗? - synaptik 45分钟 前
清除间隔(停止它)你可以执行clearInterval(autoScroll);
但在你的情况下,你怎么知道页面何时完成加载?您可以使用$(document).ready(function(){ ..... });
,但这实际上取决于浏览器。
因此可能需要更复杂的方法,例如拍摄加载内容的快照$(&#39; .content&#39;)。html()这会将它每秒与最新快照进行比较,看看是否是不同的。如果不是那么这意味着它完成了加载。然后你可以清除计时器。