2008-10-26 69 views
3

谷歌瀏覽器不行爲相同,其他瀏覽器:谷歌瀏覽器和流式HTTP連接?遇到此塊時

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

    sleep(5); 
} 
?> 

它似乎在等待連接到做任何事情之前終止。

除了輪詢以外,我怎樣才能在谷歌瀏覽器中做類似的事情?

+0

您是否嘗試過最新版本的鉻合金,即通過acid3測試100/100的合金? http://en.wikipedia.org/wiki/Acid3 – Lamar 2009-01-02 22:00:22

回答

3

某些瀏覽器在呈現可用數據之前需要下載一定數量的字節。我記得上次我試圖做你正在做的事情時,我最終不得不傾倒300個空間來確保瀏覽器會打擾它。

+0

我知道IE做這個,但多少Chrome需要? – MiniScalope 2010-11-28 13:26:31

+0

1024在我的情況。 – 2011-03-24 14:44:51

1

我希望我現在可以訪問Chrome來測試一些想法。您是否嘗試過在</script>之後添加一些HTML並查看它是否遞增呈現?我想它會,並且如果是這樣的話,那就證明Chrome不想在頁面加載時在<script>元素中運行javascript。當然,渲染標記可能會觸發腳本運行。如果沒有,你可以嘗試包括JavaScript作爲外部文件,看看是否影響執行時間。

我認爲瀏覽器在開始執行javascript時,通常會根據規範有一些餘地,特別是在頁面加載時。如果沒有輪詢,可能無法以完全跨瀏覽器的方式執行此操作。

0

您是否與Chrome開發人員討論過?你有沒有發現一個錯誤?恕我直言,最好的解決方案是讓Chrome像其他瀏覽器一樣行事,而不是爲它制定解決方法。

好吧,其實你可能需要一個短期的解決方法。但想象一下,每個瀏覽器在各個方面的行爲都不相同,例如HTTP,HTML,CSS處理......這不是一個愉快的地方!

0

流正在工作。解決方案是無眼瞼的答案。

print「2048 points [BR> \ n」;;

的[= <

順便說一句看的用戶代理。 Safari也需要很多字節。我認爲1024. Firefox不需要太多字節。

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個字節的工作。希望這可以幫助你

以上程序在谷歌瀏覽器中工作正常。

4

我有一個類似的問題,並通過在每次刷新前添加一個HTML標記(在我的情況下爲< br />)來解決它。

我的猜測是Chrome會等待顯示的元素在觸發重新呈現之前關閉。這只是一個猜測。

它似乎並不需要1024個字節 - 我認爲當它工作時我的字節數應該低於512個字節。