3

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

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

    sleep(5);
}
?>

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

除了轮询我如何在谷歌浏览器中做类似的事情?

4

6 回答 6

4

我有一个类似的问题,并通过在每次刷新之前添加一个 HTML 标记(在我的情况下为 <br />)来解决它。

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

它似乎不需要 1024 字节——我想当它工作时我会只有不到 512 字节。

于 2009-09-24T03:10:47.133 回答
3

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

于 2008-10-26T08:29:28.283 回答
1

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

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

于 2008-10-26T05:30:43.090 回答
0

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

好的,实际上您可能需要一个短期的解决方法。但是想象一下,每个浏览器在各个方面的行为都不同,比如 HTTP、HTML、CSS 处理……这将不是一个令人愉快的地方!

于 2008-10-26T16:50:41.300 回答
0

流正在工作。无眼睑的答案是解决方案。

print "2048 点[BR>\n";

[ = <

顺便说一句,看看用户代理。Safari 也需要很多字节。我认为是 1024。Firefox 不需要那么多字节。

于 2008-11-25T16:46:46.510 回答
0
<?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 字节的数据。那么它会正常工作。并确保将脚本标签保留在正文标签中。奇怪的是,在我的情况下,如果我添加 1024 个字节,它就起作用了。希望这可以帮助你

上述程序在谷歌浏览器中运行良好。

于 2009-04-28T07:48:46.877 回答