搜索了一下,但对此没有太多了解。
我有一个页面通过循环处理了很多东西,我把它放在php页面的顶部:
ob_implicit_flush(true);
ob_end_flush();
这很乐意将循环输出到我的浏览器窗口,但内容滚动到页面底部,我必须手动向下滚动。所以我的问题是:如何让页面或浏览器窗口滚动显示内容?
我在某处使用javascript setInterval来开始和结束滚动可能会发挥作用,听起来可能就是这种情况 - 只需让页面开始在脚本开头滚动并在结束时结束..但是我用javascript来说不是很好,所以希望有人能告诉我该怎么做?
我能想到的另一个解决方案是以某种方式让javascript强制关注某个特定的元素类或正在生成的东西..但这似乎是一个潜在的笨重选项..
任何快速提示都会很棒。
谢谢!
答案 0 :(得分:1)
使用此javascript:
function getDocHeight() {
var D = document;
return Math.max(
Math.max(D.body.scrollHeight, D.documentElement.scrollHeight),
Math.max(D.body.offsetHeight, D.documentElement.offsetHeight),
Math.max(D.body.clientHeight, D.documentElement.clientHeight)
);
}
document.documentElement.scrollTop = getDocHeight();
你可以简单地添加一行
document.documentElement.scrollTop = getDocHeight();
发送给客户的每件作品,以便更新滚动条......
或
将此行代码添加到输出的开头:
var scroller = setInterval(function() {
document.documentElement.scrollTop = getDocHeight();
}, 100 /*update intervall in ms*/);
此行到输出结尾:
clearInterval(scroller);
答案 1 :(得分:0)
无需添加数千行代码,只需在输出顶部添加一个简短函数,然后在末尾添加一行即可。可行(将html添加到开始,将/ html添加到末尾以使其更漂亮;虽然没有必要):
<script>
var scroller = setInterval(function() {
window.scrollTo(0,document.body.scrollHeight);
}, 10); // update every 10 ms, change at will
</script>
<?php
// generate 1000 lines of html code
for($i=0; $i<1000; $i++){
echo $i . "<br>";
ob_flush(); // flush out the output as we go
flush(); // same
usleep(10000); // add some delay to see it in action
}
?>
<script>
clearInterval(scroller); // stop updating so that you can scroll up
</script>