2013-02-08 68 views
2
<%@ Page Language="C#" .. %> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > 
<html> 
<body> 
<svg xmlns="http://www.w3.org/2000/svg" version="1.1"> 
    <circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="red" /> 
</svg> 
</body> 
</html> 

/*上述代碼不起作用。沒有得到任何輸出。 如果將第二行替換爲Doctype,如下所示。SVG不能在IE 10中使用Doctype HTML 4進行渲染

< DOCTYPE HTML PUBLIC! 「 - // W3C // DTD XHTML 1.0過渡// EN」 「http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd」>

任何一個可以幫助我瞭解什麼本質區別? */

回答

5

的主要區別是,

導致使用怪癖模式瀏覽器。 IE不支持怪異模式下的SVG。

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

使瀏覽器在幾乎標準模式。

你可以把你的文檔類型爲一體,將很容易渲染IE9的SVG,僅僅通過增加系統標識符,就像這樣:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

我不知道這是否會工作IE10 ,但是如果IE10遵循HTML5文檔類型解析規則,即使上述文檔類型也會導致怪異模式,因此可能導致SVG無法呈現。

HTML 4.0是由HTML 4.01超過13年以前,在1999年更換爲W3C推薦標準,所以你應該使用絕對最小值DOCTYPE是

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

這將導致幾乎標準模式兼容HTML5瀏覽器就像你提到的XHTML doctype一樣。但是,這是針對人們從HTML 3.2切換他們的網站。

更好的做法是確保您的網站在標準模式下工作。你可以通過使用HTML 4.01嚴格的DOCTYPE像

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

這是當前的W3C推薦標準,但它仍然是一個有點長記住。會做把瀏覽器的同一個作業到標準模式最短的字符串是

<!DOCTYPE HTML>

這就是爲什麼它被選爲在HTML5和以後的文檔使用。

2

標準的HTML 5 DOCTYPE是

<!DOCTYPE html>

您應該使用。

IE 9/10將只顯示SVG的html 5 documents和xhtml文檔。您的替代doctype將內容標記爲xhtml,所以這就是爲什麼這是有效的。

+0

感謝您的回覆。是否有任何變通或解決方案可以使其適用於HTML 4 Doctype。我只需要將Doctype作爲HTML 4。 – Apparao 2013-02-08 12:14:19

+0

編號IE9只在標準模式下顯示SVG,並且您需要html5文檔類型才能在標準模式下獲取它。我添加了一個答案的鏈接,這是微軟在這個問題上的陳述。 – 2013-02-08 12:26:16

+1

@Apparao爲什麼你需要有一個HTML4 DOCTYPE? – robertc 2013-02-08 18:02:49

1

兩件事情:

  1. 確保您的Web服務器在爲您的SVG文件用正確的MIME類型: 「圖像/ SVG + XML」。我有一箇舊版Lighttpd的問題。

    < META HTTP-當量= 「X-UA-兼容」 內容= 「IE =邊緣」/>

  2. 可以通過將X-UA-兼容元標記重寫IE的再現模式

這將迫使IE進入標準模式,同時保持舊的文檔類型。這不是最佳實踐,但似乎在IE10中工作。