2012-02-20 93 views
1

,我們正在申請這個CSS的WebView問題HTML5的doctype

body {background-color: ffffff; 
font-size:100px; 
font-style: normal; 
font-family: MankSans,Arial,Helvetica, sans-serif; 
} 

在每一個現代瀏覽器在那裏的字體屬性將應用想象一下,一個非常簡單的HTML文檔

<!DOCTYPE HTML > 
<html> 
<body> 
<table> <tr> <td> This is a test </td> </tr> </table> 
</body> 
</html> 

。在我的WebView中,但是,他們不會。

環顧四周,我發現問題是,WebView進入quirksmode,其中td標籤缺乏繼承,所以身體css不適用。

林知道有解決這個方法,比如使用了更明確的4.01的doctype,或添加此的CSS

table, thead, tbody, tr, td, th { 
font-size: inherit; 
font-family: inherit; 
} 

然而這些不解決問題的根源,這是的WebView決定反對當所有其他基於WebKit的瀏覽器(Safari,Chrome等)運行正常時,所有邏輯突然「誤解」HTML5文檔類型並切換到quirksmode。

有什麼辦法以編程方式解決這個問題?

+2

你想念的起始html標記?還是你忘了複製它? – Fox32 2012-02-20 17:41:05

+0

忘了複製它。我編輯了原始問題。 – JPed 2012-02-21 10:59:44

回答

0

好吧,我愚蠢的錯誤
事實證明,因爲發送的HTML文檔的網頁視圖IM對待它,並加入一個內部ID的所有標籤(需要內部功能,這個內部ID之前的DOCTYPE是越來越擰我的應用程序)

但是如果有人用同樣的方法搞砸了我想知道發生了什麼,我會提供一個簡單的解釋。

DOMDocumentType有幾個字段,其中包括名稱,publicId和systemId。

例如,考慮典型的HTML 4.01過渡DOCTYPE

它可以在

名稱= HTML被劃分
publicId = - // W3C // DTD XHTML 1.0過渡// EN
systemID與= http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd

,你可以,只要格式被保存添加自定義ID給它,這樣

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" CustomID="1"> 

與HTML 5 DOCTYPE的問題是,雖然它看起來像一個)

<!DOCTYPE html> 

的DOM,它實際上是B)

<!DOCTYPE html PUBLIC "" ""> 

長話短說,加入我的自訂=」 1「的結尾處)導致DOM無法將其識別爲有效的DOCTYPE,因此將我的WebView切換爲quirksmode。如果你想有一個HTML5 DOCTYPE並添加自定義ID到它,你應該做的

<!DOCTYPE html PUBLIC "" "" CustomId="1"> 

w3schools.com告訴我們,id屬性是無效的:基地,頭,HTML,元,腳本,風格和標題。

他們應該提醒我們,放置不當,它也可以擰你的DOCTYPE =)