2010-02-21 52 views
6

我很困惑。爲什麼SVG不能在本地HTML文件上工作?

如果我點通過瀏覽器(上OSX Chrome或Safari)這個網站,它顯示了所有SVG完美:

http://emacsformacosx.com/

現在,如果我在該網頁上查看源代碼,複製,並將其粘貼到桌面上的新HTML文檔中,然後使用任一瀏覽器查看該文檔,我根本沒有收到SVG。

爲什麼區別?

爲什麼SVG在網站上工作,但不在本地HTML文件中工作?

謝謝!

回答

8

你把它改名爲HTML,瀏覽器呈現HTML內容..而頁面text/xml ..

如果其重命名爲.xml並打開它,你會看到它就好了..

+0

確認。在Mac OS X 10.6.2 – pestilence669 2010-02-21 02:10:40

+0

上使用此方法轉載並修復。 所有的HTML5文檔都應該具有.xml擴展名,還是僅僅是文檔中具有SVG的功能? – Axeva 2010-02-21 03:08:34

+0

我只是玩了一下,似乎FF和Chrome都使用'.xhtml'擴展名來渲染正確......看起來很明顯,他們不會接受來自文件內部的內容定義(例如元標記..),但它似乎是這種情況.. – 2010-02-21 03:53:41

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 ::「

+2

應該是這種情況,但不幸的是它不是..它仍然不會正確渲染.. – 2010-02-21 03:46:20

+0

不幸的是,加比是正確的。它不起作用。 你已經想出了一個優雅的解決方案Amphetamachine,但瀏覽器忽略它。 令人沮喪。 – Axeva 2010-02-21 20:33:30

+0

瀏覽器=愚蠢 – amphetamachine 2010-02-21 23:41:37

相關問題