2009-07-30 33 views
2

時,IE表現很奇怪現在,這是我在PHP中遇到的最奇怪的問題。PHP/HTML/CSS:當使用require_once()

除了一頁以外,所有頁面看起來都正常;當我第一次看到這個問題時,我認爲這是IE和樣式表常見的問題之一(我在這個頁面上有一個特定的CSS文件)。我試圖排除CSS文件只是爲了確保問題確實存在於這個文件中,但事實並非如此。然後,我想我已經忘記關閉任何HTML標籤,所以我多次瀏覽代碼,但似乎都是正確的。於是,我開始把代碼中的註釋,直到我意識到,當我的推杆在評論下面的代碼,網頁本身的行動正常使用IE比較:

require_once(PATH_INCLUDES . 'adjacency.php'); 

這是一個有效的路徑和文件不只是包含一個帶有函數的類 - 除了die(),如果MySQL查詢失敗,沒有任何輸出。

有些東西,在IE看起來很怪異如下:

  • 容器通常是中心,現在它的左側。
  • 帶有repeat-x的背景並不完整。
  • 菜單中的懸停功能不起作用。

有人嗎?

編輯:我試圖將adjacency.php包含在另一個文件中,並且發生了同樣的問題。

回答

5

作爲一個猜測,在關閉「?>」之後,最有可能在包含文件末尾有一些空格。 (Zend Framework建議不使用關閉PHP標記的原因之一。)

+2

可能是原因,doctype之前的任何輸出都會觸發IE6中的quirksmode – 2009-07-30 20:26:03

+0

我也這麼認爲,所以我在IE中檢查了它,甚至在右鍵單擊源代碼。 doctype之前沒有任何東西。 – Ivar 2009-07-30 20:27:44

1

包含的PHP文件是否以UTF-8 BOM(字節順序標記)開頭?這是一個不可見的字節序列,有時出現在Unicode文本文件的開頭,以幫助自動檢測UTF。不幸的是,PHP有些天真,並且會在從包含的PHP文件中讀取BOM時輸出BOM。通過我的實驗,IE可以處理一個BOM,但是如果BOM翻倍(如果瀏覽器請求的PHP文件和每個包含BOM的文件都是這種情況),那麼它不會將doctype看作是開始時的情況,從而觸發怪癖模式。

確保您的編輯器配置爲保存沒有物料清單。