XHTML 1.1,WordPress 和瀏覽器

剛才的文章提到,Wordpress 有個奇怪的特性,就是喜歡在某些 XHTML Tag (Block-level tag,例如 p, div, li, h1-6 etc.) 之後自動加插 </p>,而這也是很多我之前的文章不能在火狐正常顯示的原因。解決辦法就是在寫文章的時候加一個 \n 在每個 block level element 之後,讓 WordPress 也懂在 tag 之前加入 <p>。

好了,辛苦了整晚檢查 Firefox 也可以把舊文章正常顯示出來以後,滿以為網頁可以通過 W3C 的 validator,怎知道它居然罵我那個<br /> 不可以用 clear 這個 attribute。

文章結構

當然我知道 1.1 不可以用 clear,但問題是有些文章有左邊那幅圖的結構:圖片偏左(使用 CSS 以及 div),文字偏右,然而我不想段落三也貼著段落二的尾部,被圖片壓成一堆。當時我知道唯一的解決辦法便是用 <br clear=”all” />,不過這樣就不符合 XHTML 1.1。
今天就找過一下 Google 看看有沒有人和我一樣遇上這樣的慘況。首先找上的是這篇,不過 <br style=”clear: all;” /> 只適合在 IE 上使用,Firefox 卻不理會。第二個方案則完全不行,因為一個<br /> 只能跳一行,遇上幾行空白就無用武之地。

在那篇文章的留言看見另一篇文章的連結,說要在不同的 block element 加入這個 attribute 而放棄 <br />。知道<p>會出現問題,所以便選擇了用<div>:

<div style="clear:both;"></div>

呼,以這個代替 br 便輕鬆解決了 XHTML 1.1 和 Firefox 的兼容問題~

Firefox 的用家,對不起!

自從 Clement T 君在我向各 IE 用家道歉的那篇文章介紹了這個好用的 plug-in 以後,為各非微軟瀏覽器的用家著想,便立刻安裝了這個插件。

可是我太懶,加上大意,竟以為以往的文章全符合 XML 格式而沒有再回顧檢查。結果嘛,剛剛就有人投訴說 TSP 中文簡介不能正常運作…

最後花了點功夫由頭一篇文章檢查到尾。其實這不是我的問題,而是 WordPress 為了讓文章好看一點而亂加上 <p> tag,而令網頁成不了正確的 XML。唉,累死了。

通常問題是這樣的:
<ul>
<li> ... </li>
</ul>

而 WordPress 卻很喜歡沒頭沒腦的在 </li> 之後加上</p> … 害得 Firefox 因為 XML 不正確而顯示錯誤畫面。
最後我要這樣:
<ul>
<li> ... </li>

</ul>
才把問題解決… 在這段時間找不到網頁的朋友,千個萬個的對不起!(我是不是要打 WP 的屁股?)

IE 的用家,對不起!

對這裏 XHTML 的完整性有點執著,因為看見 XHTML 1.1 的 MIME type 應該設定為 “application/xhtml+xml”,所以也多手在 WordPress 的樣版檔開頭加了一句 header(“Content-type: application/xhtml+xml”)… Firefox 開啟自然沒有問題,但是弊在我沒有用 IE 檢查,直到今天 Kevin 君投訴說我的網頁開不到,才知道這句 header() 闖了禍,開罪了各位經常用 IE 瀏覽這裏的朋友們。謹此致以萬二分歉意 (也向 M$ 高舉一根中指)

說起 IE 的問題,上班遇得多著。好像有一次同事貪方便把 table 其中一個資料格 (<td>)移除,只用<!– 和 –> 包著便算數,然而 IE JavaScript 引擎卻把這個已成 comment 的 td 算在 DOM 內,用 JavaScript 數行數的時候總是出現問題。後來花了許多時間才知道是這個 “comment” 作怪… 除了大聲呼寃以外沒有甚麼可以抒發心中的憤恨。

OK OK,我下次改版後找 IE 來試就是了,別打我…

XHTML 2.0

xml.com 的專欄開始介紹 XHTML 2.0 呢。XHTML 2.0 在語法上有很大變更,例如移除 <br />,換成 <l> … </l>;<img /> 就扔,要用上<object>… 還有新的<nl>呢。看來 W3 要做到 presentation 跟 semantics 絕對分家…

現在我不清楚 HTML 的角色,究竟是一套 presentation language,還是一套 document description language 呢?不過,標準走得太遠,有時也會嚇倒初學用家…… 以後不知道還有沒有人會用 text editor 寫 XHTML 2.0… 我對這套標準的認受性不太樂觀。