SVG不会在IE 10中使用Doctype HTML 4进行渲染

<%@ 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在Quirks模式下不支持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无法呈现。

在1999年,HTML 4.0被HTML 4.01作为W3C推荐替代了13年,所以你应该使用的绝对最小文档类型是

<!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和更高版本的文档。


标准的html 5文档类型是

<!DOCTYPE html>

你应该使用它。

IE 9/10只会显示HTML 5文档和xhtml文档的SVG。 您的替代doctype将内容标记为xhtml,所以这就是为什么这是有效的。


两件事情:

  • 确保您的Web服务器正在使用正确的MIME类型“image / svg + xml”来提供SVG文件。 我有一个旧版Lighttpd的问题。

  • 您可以通过添加X-UA兼容元标记来覆盖IE的渲染模式:

    <meta http-equiv =“X-UA-Compatible”content =“IE = edge”/>

  • 这将迫使IE进入标准模式,同时保持旧的文档类型。 这不是最佳实践,但似乎在IE10中工作。

    链接地址: http://www.djcxy.com/p/15705.html

    上一篇: SVG is not rendering in IE 10 with Doctype HTML 4

    下一篇: Good starting point for DOCTYPE to use schema.org