有人知道为什么在本地tomcat服务器上托管时,此页面http://emacsformacosx.com/中的相同代码无法呈现?
我正在尝试使用某些SVG,但无法让它在本地运行。有什么想法吗?
答案 0 :(得分:6)
该页面是XHTML,因此应该使用适当的Content-Type标头。如果页面以text / html的形式提供,那么Firefox和Chrome(我签入的唯一两个)将无法识别SVG工作所需的XML名称空间。
虽然正在使用标题
提供实时页面Content-Type: text/xml; charset=UTF-8
严格来说,这不是正确的。在我的测试中,用服务
Content-Type: application/xhtml+xml; charset=UTF-8
使其正确呈现,并且是XHTML的合适类型。
请注意,您必须检测服务器上的Internet Explorer(以及其他不了解XHTML的浏览器),并将内容类型更改为text/html
- 如果显示application/xhtml+xml
内容类型IE将提示用户下载文件;对于text/xml
,它将显示漂亮的XML文档树(虽然偶尔会混淆并设法通过内容嗅探正确显示HTML)。
答案 1 :(得分:2)
您可能需要设置服务器以便为SVG提供正确的MIME类型:image / svg + xml
答案 2 :(得分:1)
正如NickFitz和编码读者所提到的,要使嵌入式SVG正常工作,您的页面需要作为application/xhtml+xml
提供。使用Tomcat至少有三种实现方法:
HTTP_ACCEPT
标头I blogged this approach in the context of mobile devices来容纳IE用户。或者,将SVG内容拆分为单独的文件,然后页面的内容类型无关紧要。 IE不会渲染SVG,但它至少会显示页面的其余部分。您可以将所有SVG带出页面及其链接,但仍有some browser compatibility issues。
最后,如果您只想查看一个静态页面,其中包含嵌入式SVG的本地硬盘而不涉及任何服务器,则将文件扩展名从.html
更改为.xhtml
可能会有效。
答案 3 :(得分:0)
如果您使用的是Apache服务器,则可以指示which mime type用于这些图像,只需将这两行添加到您的.htaccess
文件中:
AddType image/svg+xml svg svgz
AddEncoding gzip svgz