主要区别在于
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
使浏览器使用怪癖模式。 IE 不支持 quirks 模式下的 SVG。
而
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
使浏览器处于几乎标准模式。
您可以将您的 doctype 转换为一种可以非常轻松地在 IE9 中呈现 SVG 的类型,只需添加一个系统标识符,如下所示:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
我不知道这是否适用于 IE10,但如果 IE10 像它应该遵循 HTML5 doctype 解析规则,即使是上述 doctype 也会导致 quirks 模式,因此可能导致 SVG 不使成为。
HTML 4.0 在 13 年前的 1999 年被 HTML 4.01 取代为 W3C 推荐标准,因此您应该使用的绝对最小文档类型是
<!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 HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
这是当前的 W3C 建议,但要记住的时间仍然有点长。将浏览器置于 standards 模式的最短字符串是
<!DOCTYPE HTML>
这就是为什么选择它用于 HTML5 和更高版本的文档。