2011-04-06 39 views
1

我創建了兩個線程herehere關於該Internet Explorer工作在怪癖模式,並打破了佈局。經過一番調查後,我發現,不知何故,PHP使一些混亂。不知何故,PHP破解doctype

例如,如果我運行下面的代碼作爲網頁服務器上的HTML頁面IE正確解析它。我使用小型CMS,所以如果我把代碼分成三部分讓我們說頭主頁腳(CMS合併它們),然後IE顯示怪異模式並且佈局被破壞。 PHP文件的html輸出與下面的相同。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
    <head> 
     <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> 
     <style type="text/css" media="screen"> 
      body{ 
       font: 11px Tahoma, Verdana, Arial, sans-serif; 
       color: #707070; 
       background: #8c2727 url('../img/bgr_red.png') repeat-x; 
      } 

      a { 
       color:#bc2828; 
       text-decoration:none; 
       font-weight: bold; 
       outline: none; 
      } 


      #wrapper{ 
       position: relative; 
       width: 960px; 
       margin: 70px auto; 
       background-color: #fff; 
       border: 1px solid red; 
      } 

     </style> 
    </head> 

    <body> 
    <div id="wrapper"> 
     <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> 
    </div> 
    </body> 
    </html> 

我相信問題是在CMS中。但是,什麼會打破文檔類型?

編輯: 下面是截圖來自提琴手 See the rectangle. What is that ?

+2

確保在doctype上方沒有任何打印輸出。文檔類型必須是頁面上的第一件事。 – Seth 2011-04-06 11:12:29

+0

你在說哪個版本的IE?你的意思是怪癖或IE7兼容模式? – 2011-04-06 11:14:09

+0

IE9未在IE9中進行測試 – prista 2011-04-06 11:16:19

回答

2

如果瀏覽器以不同的方式處理這兩個頁面,那麼它們之間存在一些差異,即使它在「查看源代碼」時不明顯。

我建議使用諸如Fiddler之類的工具來查看從服務器傳送的實際頁面內容。


編輯:您會發現「RAW」和「HEX」選項卡比「TextView」更重要。從「Raw」開始,比較「Content-Length」標題,然後查看「HexView」以查看發生了什麼變化。

+0

我知道輸出中的內容打破了佈局,但我不知道如何「看」它。那麼小提琴手幫了我很多 – prista 2011-04-06 11:49:08

3

很可能是一些輸出的文檔類型纔去瀏覽器。

確保:

  • 沒有空格或任何其他類型的數據的<?php開始標籤之前
  • 沒有BOM開頭,如果你的文件正在使用一些Unicode編碼
  • 保存

...在正在被分析以生成輸出的任何文件中。

+0

新提琴手screensot支持此答案。 BOM似乎最有可能。 – Chris 2011-04-06 11:38:05