遇到此金块时,Google chrome 的行为与其他浏览器不同:
<?php
while (true) {
echo "<script type='text/javascript'>\n";
echo "alert('hello');\n";
echo "</script>";
flush();
sleep(5);
}
?>
在做任何事情之前,它似乎正在等待连接终止。
除了轮询我如何在谷歌浏览器中做类似的事情?
遇到此金块时,Google chrome 的行为与其他浏览器不同:
<?php
while (true) {
echo "<script type='text/javascript'>\n";
echo "alert('hello');\n";
echo "</script>";
flush();
sleep(5);
}
?>
在做任何事情之前,它似乎正在等待连接终止。
除了轮询我如何在谷歌浏览器中做类似的事情?
我有一个类似的问题,并通过在每次刷新之前添加一个 HTML 标记(在我的情况下为 <br />)来解决它。
我的猜测是 Chrome 会等待正在显示的元素在触发重新渲染之前关闭。不过,这只是一个猜测。
它似乎不需要 1024 字节——我想当它工作时我会只有不到 512 字节。
某些浏览器需要在呈现可用数据之前下载一定数量的字节。我记得上次我尝试做你正在做的事情时,我最终不得不转储 300 个空格以确保浏览器会打扰它。
我希望我现在可以访问 Chrome 来测试一些想法。您是否尝试过添加一些 HTML</script>
并查看它是否以增量方式呈现?我想它会,如果是这样,那将证明 Chrome 不想在<script>
页面加载时在元素中运行 javascript。当然,渲染标记可能会触发您的脚本运行。如果没有,您可以尝试将 javascript 作为外部文件包含在内,看看这是否会影响执行时间。
我认为浏览器通常在开始执行 javascript 时根据规范有一些余地,尤其是在页面加载时。如果没有轮询,可能无法以完全跨浏览器的方式执行此操作。
您是否与 Chrome 开发人员交谈过?你打开了一个关于那个的错误吗?恕我直言,最好的解决方案是让 Chrome 的行为与其他浏览器一样,而不是为其提供解决方法。
好的,实际上您可能需要一个短期的解决方法。但是想象一下,每个浏览器在各个方面的行为都不同,比如 HTTP、HTML、CSS 处理……这将不是一个令人愉快的地方!
流正在工作。无眼睑的答案是解决方案。
print "2048 点[BR>\n";
[ = <
顺便说一句,看看用户代理。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," ");
echo $padstr;
echo "</body></html>";
}
flush();
sleep(5);
$i = $i + 1;
}
?>
第一次发送至少 2048 字节的数据。那么它会正常工作。并确保将脚本标签保留在正文标签中。奇怪的是,在我的情况下,如果我添加 1024 个字节,它就起作用了。希望这可以帮助你
上述程序在谷歌浏览器中运行良好。