2010-01-11 46 views
0

当我打开my project时,只显示背景和图像未找到项目,而页面为100%xhtml 1.1 strict。开发人员工具显示IE停止在SVG徽标之后进行渲染...... Firefox正常工作。该死的你IE!IE8无法完整显示页面

回答

1

请勿尝试自动关闭“对象”标记。

<object data="/images/Logo_header.svg" type="image/svg+xml"></object> 

代替

<object data="/images/Logo_header.svg" type="image/svg+xml" /> 

不知道这是一个错误,虽然,或FF恢复正常。如果您还将页面作为XML提供服务,那么它就是唯一有效的XML,而不是。你使用'text/html'而不是'application/xhtml + xml'。

+2

FF没有恢复正常:网站上有一个Accept-Header-sniffer,与“application/xhtml + xml”代替'text/html'提供相同的文件,允许Firefox使用真实理解自闭标签的XML解析器。 – bobince 2010-01-11 15:13:31

+0

这是正确的:我已经检测到的地方,应该找出基于头应该发送它应该作为application/xhtml + xml发送。 Firefox得到这样的服务。我会研究它 – 2010-01-11 18:09:29

1

Kamiel是对的:你不能在IE上使用XML自动关闭标签。在任何情况下,由于IE无法渲染SVG,因此无论如何都需要在对象内包含一些后备内容,例如图像。

我会建议您目前使用的sniff-and-serve-XHTML-as-XML或HTML方法。它没有好处;你将只会得到这样的奇怪的兼容性问题,因为你的文档是用不同的解析,样式和DOM上下文处理的。更重要的是,当你这样做时,你必须在响应中使用Vary: Accept标题,这使IE在缓存中的效率低得多。在任何情况下,W3 specifically don't allow XHTML-as-text/html用于XHTML 1.1文档。

要么全力以赴,只提供XHTML 1.1(牺牲IE兼容性),要么坚持为所有来者提供文本/ html格式的XHTML 1.0严格内容,观察compatibility guidelines

+0

感谢这个答案,它真的很有启发性。 但我仍然保持这种功能,否则IE会完全干扰。无论如何,我的目标都是Firefox观众,如果IE至少显示一点,那就太好了。 – 2010-01-11 18:16:32