【问题标题】:php ob_flush : How do I make the browser window/page scroll down with the output?php ob_flush:如何使浏览器窗口/页面随着输出向下滚动?
【发布时间】:2013-06-03 15:30:10
【问题描述】:

搜索了很多,但找不到太多关于此的内容..

我有一个通过循环处理很多事情的页面,我把它放在了 php 页面的顶部:

ob_implicit_flush(true);
ob_end_flush();

这很高兴将循环抽出到我的浏览器窗口,但内容滚动到页面底部,我必须手动向下滚动。所以我的问题是:如何让页面或浏览器窗口随内容滚动?

我在某处使用 javascript setInterval 来开始和结束滚动可能会起到作用,听起来可能就是这种情况 - 只需让页面在脚本开头开始滚动并在脚本结束时结束......但我对 javascript 不太了解,所以希望有人能告诉我该怎么做?

我能想到的另一个解决方案是以某种方式让 javascript 强制关注特定元素类或正在生成的东西..但这似乎是一个潜在的笨拙选项..

任何快速提示都会很棒。

谢谢!

【问题讨论】:

  • 唯一的解决方案是使用java脚本来保持窗口滚动到你已经建议的底部。

标签: php javascript scroll flush


【解决方案1】:

无需添加数千行代码,只需在输出顶部添加一个简短函数,并在末尾添加一行。这有效(在开头添加 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>

【讨论】:

    【解决方案2】:

    使用这个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);
    

    【讨论】:

    • 好的,谢谢,这行得通。但是你认为这是最好的解决方案吗?有什么我可以做的不会在我的输出中添加数千行额外的行吗?能够进行一些在循环开始时开始滚动并在结束时结束的javascript调用会很好......
    • 太棒了!这也有效,我仍然有整洁的代码。我想我不确定其他机器上的 UI 效果会是什么,但它对我来说似乎很流畅且功能齐全。感谢您的宝贵时间!
    猜你喜欢
    • 2015-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-22
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    相关资源
    最近更新 更多