HTML Comment問題

無意發現某段被註解掉的HTML原始碼卻會在Firefox上被顯露出來,幾經測試,發現在註解內容中只要前後有出現--及>,Firefox就會將其視為註解結束。

為了突顯問題,我寫成以下的測試案例。直覺上,大部分的人應會認定<!--與-->裡包含的綠字內容全部屬於註解:

<!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">
<head>
    <title></title>
</head>
<body>
<!--
**程式語法範例**
1. i--;
2. if (a > b) { x = 3; }
我很乖,我有遵守SGML規範!
-->
</body>
</html>

實地以不同瀏覽器測試,IE, Safari, Opera, Chrome如同預期,顯示空白網頁。但Firefox檢視時卻會跑出文字來:

這回,終於不是IE,Firefox當了不合群的黑羊! 但,Firefox錯了嗎? Firefox錯了嗎? Firefox錯了嗎?

我查到一段關於HTML Comment規格的討論。看起來,反而因為Firefox一板一眼地落實HTML規範,才會顯示出文字;其他的瀏覽器順應網頁設計者(或者應說是瀏覽器RD人員)的直覺,提供了較符合一般人預期的解讀結果。進一步,若把DOCTYPE宣告移除,Firefox便會同流合污敬業樂群地跟大家一樣顯示空白網頁,算是證明Firefox只是在精準地貫徹HTML規範。

我個人偏好限定"-->"才算結束的註解語法規則,如此在撰寫註解內容時,較不易踩到地雷,不必額外遵守>必須要改成&gt;的要求。但HTML規格既已定義,在未修改前,惡法亦法,Firefox是無辜的,在設計網頁時,記得把HTML註解裡的>改寫成&gt;,應該就萬無一失了。

歡迎推文分享:
Published 07 September 2009 11:00 AM 由 Jeffrey
Filed under: ,
Views: 14,319



意見

# 哇沙米 said on 06 September, 2009 11:28 PM

非常值得參考的測試,感謝您的經驗分享!

# Johnny said on 07 September, 2009 09:52 PM

SGML 對 HTTP Comment 的規定格式好像有點不容易理解。既然已定義 <! 到 > 中間是 Comment Declaration, 那麼實在不知道還要另外定義 -- 到 -- 代表 Comment 是什麼意思。莫非在 Comment Declaration 裡面出現多個 Comments 有什麼特殊的意義?

不過, 如果回想起來, 我確實記得有些網站的 Comments 中有多行是以 -- 開頭和結尾的... 也許不只是巧合而已。

# 小馬 said on 29 September, 2010 09:45 PM

很有趣的經驗分享

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<September 2009>
SunMonTueWedThuFriSat
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910
 
RSS
創用 CC 授權條款
【廣告】
twMVC
最新回應

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication