为什么SVG不能处理本地HTML文件?

时间:2010-02-21 01:55:14

标签: html svg xhtml

我很困惑。

如果我通过浏览器(OSX上的Chrome或Safari)指向此网站,它会完美显示所有SVG:

http://emacsformacosx.com/

现在,如果我在该页面上查看源代码,复制它,并将其粘贴到我桌面上的新HTML文档中,然后使用任一浏览器查看,我根本就没有SVG。

为什么会有差异?

为什么SVG在网站上工作,而不在本地HTML文件中工作?

谢谢!

2 个答案:

答案 0 :(得分:8)

您将其重命名为HTML,并且浏览器采用html内容..而页面为text/xml ..

如果您将其重命名为.xml并将其打开,您会看到它很好..

答案 1 :(得分:4)

HTTP响应头信息使浏览器将信息解释为XML:

HTTP/1.1 200 OK
Date: Sun, 21 Feb 2010 02:32:02 GMT
Server: Apache/2.2.14 (Debian)
Vary: Accept-Encoding
Transfer-Encoding: chunked
Content-Type: text/xml; charset=UTF-8

你知道,提供页面的服务器足够智能,可以检测到这是一个XML文档,并告诉浏览器。当您从磁盘加载文件时,您的浏览器可能不够智能,并且倾向于依赖文件的扩展名来提供此信息。

您可以尝试将以下内容插入<head>元素:

<meta http-equiv="Content-Type" content="text/xml; charset=UTF-8" />

你看我在那里做了什么?它只是HTTP响应头的一个镜像,它将指定文档类型和编码。

这个标签的目的是让浏览器认为,“嘿,服务器告诉我这个文件是HTML,但文档告诉我它是XML。文件可能比服务器更清楚,所以我会信任它...... ::解释为XML ::“