在遇到此块时,Google Chrome的行为与其他浏览器的行为不同:

<?php
while (true) {
    echo "<script type='text/javascript'>\n";
    echo "alert('hello');\n";
    echo "</script>";
    flush();

    sleep(5);
}
?>

似乎正在等待连接在做任何事情之前终止。

除了投票,我如何在谷歌浏览器中做类似的事情?

有帮助吗?

解决方案

某些浏览器在呈现可用数据之前需要下载一定数量的字节。我记得上一次我尝试做你正在做的事情我最终不得不抛弃300个空格,以确保浏览器会烦恼它。

其他提示

我遇到了类似的问题,并通过在每次刷新之前添加HTML标记(在我的情况下为<!> lt; br / <!> gt;)来解决它。

我的猜测是Chrome会在触发重新渲染之前等待正在显示的元素关闭。这只是猜测。

它似乎不需要1024个字节 - 我认为当它工作时我会有不到512个字节。

我希望我现在可以访问Chrome以测试一些想法。您是否尝试在</script>之后添加一些HTML并查看它是否以递增方式呈现?我想它会,如果是这样,那就证明Chrome不想在页面加载时在<script>元素中运行javascript。当然,渲染标记可能会触发您的脚本运行。如果没有,您可以尝试将javascript包含为外部文件,看看是否会影响执行时间。

我认为浏览器在开始执行javascript时根据规范通常会有一些余地,特别是在页面加载时。在没有轮询的情况下,可能无法以完全跨浏览的方式执行此操作。

您是否与Chrome开发人员交谈过?你有没有打开一个关于它的错误?恕我直言,最好的解决方案是让Chrome的行为像其他浏览器一样,而不是为它做一个解决方法。

好的,实际上你可能需要一个短期的解决方法。但想象一下这样一个世界:每个浏览器在每个方面都表现不同,比如HTTP,HTML,CSS处理......这不是一个令人愉快的地方!

Stream正在运行。眼睑的答案就是解决方案。

print <!>“2048分[BR <!> gt; \ n <!> ;;

[= <!> lt;

BTW看看用户代理。 Safari也需要很多字节。我认为1024. Firefox不需要那么多字节。

<?php
$i = 0;
while (true) {
    if($i == 0) {
        echo "<html><body>";
    }
    echo "<script type='text/javascript'>\n";
        echo "alert('hello');\n";
    echo "</script>";
    if($i == 0 ) {
        $padstr = str_pad("",2048,"&nbsp;");
        echo $padstr;
        echo "</body></html>";
    }
    flush();

    sleep(5);
    $i = $i + 1;
}
?>

首次发送至少2048字节的数据。然后它会正常工作。并确保将script标记保存在body标记中。奇怪的是,在我的情况下,如果我添加1024字节,它工作。希望这可以帮助你

以上程序在Google Chrome中运行良好。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top