如何在不破坏Chrome的情况下向Internet Explorer提供XHTML?
我经营一个论坛,其网页为XHTML + MathML + SVG;在全: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN" "http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg-flat.dtd"> 使用MathPlayer插件,Internet Explorer用户可以使用此站点。但是,有时有人正在使用IE中的论坛,但无法安装MathPlayer(也许他们在某个地方的公共计算机上)。然后IE(至少6&7)抱怨XHTML并只提供文件下载。 我在w3c网站上阅读了如何使用XSL转换(http://www.w3.org/MarkUp/2004/xhtml-faq#ie)解决此问题。当我将其放置在适当的位置时,我发现Chrome现在大声抱怨未定义的实体(具体实体是,&nbsp;但是测试表明那是不相关的)。 奇怪的是,我可以通过在DOCTYPE中手动声明实体来解决这个问题: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN" "http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg-flat.dtd" [ <!ENTITY nbsp "&#160;"> ]> 但我宁愿不要在整个实体范围内都这样做。我之所以说“ bizarrely”,是因为据我所知XHTML + MathML + SVG dtd确实声明了这些实体。因此,以某种方式错过了这些。 有办法解决这个问题吗?我可以向IE提供带有实体的XHTML吗? 如果很重要,这些页面是由php脚本生成的,并通过apache提供服务,因此,如果有一种可靠的方法来嗅探浏览器并修改文档的开头(因此仅将<?xml-stylesheet ...>位发送到IE),那将是可接受的替代方案。 …