2012-02-07 72 views
1

我可以使Internet Explorer呈現頁面時,在PHP我使用強制IE渲染輸出表

flush() 

在一個表中,Internet Explorer將等待<表的其餘部分>它呈現前信息。 Firefox直接渲染它。

編輯: 我正在使用表格來顯示有關服務器和服務的實時信息。 例如:

第一列是服務器名稱。

第二列是服務器狀態,我通過ping機器得到這個。

有沒有更好的方式來顯示這些信息?

+0

layout tableless? – dynamic 2012-02-07 17:30:53

+0

'flush()'只是將緩衝區中的所有輸出發送到客戶端瀏覽器。如果客戶端Web瀏覽器沒有渲染它,則唯一可以做的就是將您輸出的內容更改爲客戶端瀏覽器呈現的內容。 – 2012-02-07 17:31:33

+1

+1雖然我只是認爲這就是IE的工作原理。因此,我們不再使用表進行佈局的原因之一。 (< - 其他許多人) – PeeHaa 2012-02-07 17:31:54

回答

0

我建議繼續使用列表而不是表格。這樣,速度更快。標記有點類似,所以你不會出錯。

<ul class="servers"> 
    <li> 
     <span class="serverName">server1</span> 
     <span class="serverStatus">OK</span> 
    </li> 
    <li> 
     <span class="serverName">server2</span> 
     <span class="serverStatus">NOT OK</span> 
    </li> 
</ul> 
+0

我現在就試試這個,讓你知道結果! – 2012-02-08 09:11:08

+0

謝謝先生!很棒! – 2012-02-08 09:20:09

2

在樣式表中設置table-layout: fixed會阻止某些瀏覽器(可能包括IE)在呈現之前等待整個表格(當然,它也會阻止瀏覽器根據內容大小重新渲染它)。

2

不,只需調用flush()就會導致PHP將其緩衝區推送到Web服務器,僅此而已。即使IE擁有表格的數據,它也不會提前顯示它。

你可以做的唯一事情就是創建一個帶有JavaScript的表格,並逐個添加到它。當然,這很荒謬,而且你永遠不應該這樣做。它會非常慢。

對於這種行爲沒有任何可以做的事情(因爲Quentin的建議,它改變了你的佈局),當然不是服務器端。