最近在用SSI(Server Side Includes)加載子模塊的時候發現一個奇怪的現象,加載完成后的網頁老是CSS有問題,被加載模塊渲染后老是有空白部分。下面給出簡單的示例。
文件a.html的內容如下:
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <style>
5 *{
6 margin: 0;
7 padding: 0;
8 }
9 #ah{
10 border: solid 2px red;
11 }
12 #bh{
13 border: solid 2px black;
14 }
15 </style>
16 </head>
17 <body>
18 <h1 id="ah">AH</h1>
19 <!--#include file="b.html"-->
20 </body>
21 </html>
被包含的文件b.html內容如下:
1 <h1 id="bh">BH</h1>
最后在IIS上發布,得到的結果如下圖:
AH和BH中間有空白行,百思不得其解,甚至開始懷疑自己的CSS水平,更甚開始懷疑自己的人生。。。
最后用Notepad++打開,看了下編碼,震驚了:
瞬間領悟了,把其保存為無BOM的UTF-8格式,再次訪問頁面的效果如下:
終於顯示正常了,萬惡的BOM(Byte Order Mark),萬惡的記事本,還在用記事本寫程序的高手們,換個文本編輯器吧:)