xhtml - SVG 未在 IE 10 中使用 Doctype HTML 4 呈现

标签 xhtml svg doctype internet-explorer-10 html4

<%@ 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 如下,它的工作原理。

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

任何人都可以帮助我理解什么是主要区别吗?
*/

最佳答案

关键的区别在于
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
导致浏览器使用怪癖模式。 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 doctype 解析规则,即使是上面的 doctype 也会导致 怪癖模式,因此可能导致 SVG 无法呈现。

十三年前的 1999 年,HTML 4.0 作为 W3C 推荐被 HTML 4.01 取代,因此您应该使用的绝对最小文档类型是
<!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 建议,但要记住它仍然有点长。将浏览器放入 的最短字符串标准模式是
<!DOCTYPE HTML>
这就是为什么选择它用于 HTML5 和更高版本的文档的原因。

关于xhtml - SVG 未在 IE 10 中使用 Doctype HTML 4 呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14772026/

相关文章:

html - 如何重写此 HTML 以验证 XHTML 1.0 Strict?

php - 使用 str_replace 转换符号

SVG 主导基线在 Safari 中不起作用

algorithm - 在两个矩形之间绘制不重叠的圆弧

WebKit 浏览器中的 AJAX 问题

xslt - 使用 XSLT 2.0 从 XSL 转换输出最小化标签

html - 为什么我的 z-index 声明不起作用?

svg - rsvg 不渲染链接图像

gwt - 我应该为 GWT 2.0 使用哪种文档类型?

html - 为什么在 HTML 4 和 XHTML !DOCTYPE 声明中有一个回车符?