Re: 分號作為 meta-viewport 的區隔字符(Fwd: Re: [css-device-adapt] Accepting semi-colons as a separator for meta-viewport)

補充一點資訊。

以下談到的 CSS 裝置適配模組(原文 Device Adaptation,Adaptation 的翻譯源
自 Hax,歡迎母語為繁體中文的朋友想一個更好的翻譯)草案,基本上是用 CSS
的 @viewport 規則取代 <meta name="viewport" content="XXX"/> (其他的應用
留給別的朋友說明),由 Opera 提出的一個提案,W3C 上個月野遊 CSS 工作組發
表了這個提案的第一公開草案,不過總之最新版的提案請參考[1]。

[1] http://dev.w3.org/csswg/css-device-adapt/

(11/10/22 0:02), Kang-Hao (Kenny) Lu wrote:
> 原文討論串:http://lists.w3.org/Archives/Public/www-style/2011Oct
> /thread#msg652
> (若沒弄錯的話)以下 CSS 工作組的討論是說,Firefox Mobile 與 Android
> Browser 支持「;」作為 <meta name=viewport> 的 content 裡的區隔字符,而
> Safari 與 Opera 只支援「,」。
>
> 大家有什麼想法嗎?有用「;」的人要不要舉個手?

這裡指的是討論把 <meta name="viewport" content="XXX" /> 轉換成 CSS 的解
析演算法章節[2]裡的擬程式碼沒有提到「;」的這件事。

話說,跟據原文討論串,N9  Browser 好像也是只支援「,」。

[2] http://dev.w3.org/csswg/css-device-adapt/#parsing-algorithm

(11/10/22 0:33), Gray Zhang wrote:
> 不支持以分号作为分割符,分号应当作为“同一元组不同部分”的分割符,参考HTTP
> ACCEPT头的定义,各元组之间使用逗号分割,同元组的Type和Parameter之间用分号分割。这种方式应当是前端界的一种共识,如果现在将分号作为分割,会对未来需要对单一元组引入第二部分时的语法设计产生制约……

我也覺得灰大這個拿 HTTP 來比較的論述十分有道理,灰大後來在 HTML5 翻譯的
QQ 群也提到說 <meta> 有好幾個使用方式就是 HTTP 標頭(<meta
http-equiv="content-type" /> 這些),所以為避免產生混亂,的確是應該禁止
在 <meta name="viewport" /> 上使用「;」。我是覺得未來不太可能在
meta-viewport 上引入第二部份的新語法,所以我主要是覺得這是一個前端知識的
學習問題,本來 A 跟 B 語法都可以的東西這種學習起來就比較麻煩一個,這也是
HTML5 捨棄了一些重複的元素(<strike>、<acronym>)的原因[3]。

總之我建議灰大把這個論述拿去 www-style 講了。

[3]
http://www.w3.org/html/ig/zh/wiki/HTML5#.E5.85.A7.E5.AE.B9.E6.A8.A1.E5.9E.8B.E8.88.87.E5.B1.AC.E6.80.A7.E5.80.BC.E7.9A.84.E9.99.90.E5.88.B6
(「為了簡化語言造成的錯誤」那項)

>> From: Rune Lillesveen <rune@opera.com><rune@opera.com>  Organization:
>> Opera Software ASA 
>>
>> First, it's in a non-normative section, and we want UAs to move towards an
>> @viewport implementation. That being said, it's there to suggest a mapping
>> between viewport meta and @viewport in a transition phase.

目前 HTML5 規範裡面現在沒有定義使用者代理如何處理 meta-viewport,而 CSS
裝置適配模組講 meta 標籤的這個章節[4]目前也是沒有規範敘述(non-
normative)的。我猜要標準化 meta-viewport 比較困難的主要原因是因為桌上瀏
覽器不支援這個(有錯請指正),不能完整定義所有使用者代理如何處理這個標
籤,再加上 Opera 認為大家未來都該用 @viewport。這裡有人反對這種說法並認
為 meta-viewport 應該標準化的嗎?

這裡的一種繞道的作法是不要求使用者代理一定要支持 meta-viewport,但是要求
「若使用者代理支持這個標籤,瀏覽器必須使用規範裡的轉換演算法」,因為標準
的常理是只能根據有規範敘述的章節寫測 試資料,而有測試資料比較容易強迫瀏
覽器之間達到兼容。我等等會去 www-style 問這個。

另外,W3C 從 HTML5 規範開始,出現了規範對使用者代理跟對文件的要求不一致
的現象,一般使用者代理還是會處理不合規範的內容,比如說,現在
meta-viewport 的解析演算法[3]是接受這種內容的:

<meta name="viewport" content="width 這些是垃圾 = = = = device-width,
user-scalable=1" />

(沒實證過,單純看規範的結果)

如果 meta-viewport 要標準的化的話,我想包括原來提這個議題的 Google 的人
都同意對文件的要求應該包含「不能使用『 ; 』」這一項,不過對使用者代理的
要求呢?灰大是認為 Android Browser 跟 Firefox Mobile 都要改正對嗎?我也
是比較支持這兩個瀏覽器要改,因為看起來少處理一個「;」的執行效率應該會高
出個一小點(非常小就是了),而且我對 Android Browser 引入「;」很不解...

[4] http://dev.w3.org/csswg/css-device-adapt/#viewport-meta-element


話說,後來 Chromium 的人提出了包含 ebay.com, stackoverflow.com 等等 33
個有用「;」的行動網站(真不知道怎麼學來的),我倒也是有興趣知道現在中文
網站的情形,有人有資料嗎?


此致

呂 康豪(Kenny), 中文興趣小組W3C連絡人
Google+: https://plus.google.com/112088462407783855918/posts
新浪微博: http://t.sina.com.cn/1950042164

Received on Monday, 24 October 2011 01:48:43 UTC