2010-02-21 2 views
6

Ich bin verwirrt.Warum funktioniert SVG nicht mit lokalen HTML-Dateien?

Wenn ich von Browser (Chrome oder Safari auf OSX) auf dieser Website verweisen, zeigt es die ganze SVG perfekt:

http://emacsformacosx.com/

Nun, wenn ich Quelle sehen auf dieser Seite, kopieren Sie es, und füge es in ein neues HTML-Dokument auf meinem Desktop ein, dann sehe ich, dass ich mit keinem Browser überhaupt SVG bekomme.

Warum der Unterschied?

Warum funktioniert SVG auf der Website, aber nicht in der lokalen HTML-Datei?

Danke!

Antwort

8

Sie benannte sie in HTML, und der Browser übernimmt html Inhalt .., während die Seite text/xml ist ..

, wenn Sie es .xml umbenennen und öffnen, können Sie es ganz gut sehen ..

+0

Bestätigt. Reproduziert und behoben mit dieser Methode unter Mac OS X 10.6.2 – pestilence669

+0

Interessant. Sollen alle HTML5-Dokumente eine .xml-Erweiterung haben, oder ist dies nur eine Funktion von SVG im Dokument? – Axeva

+0

Ich habe nur ein bisschen gespielt und es scheint, dass sowohl FF als auch Chrome mit einer '.xhtml' Erweiterung richtig rendern ... Es scheint einfach falsch, dass sie keine Definition von Inhalt innerhalb der Datei akzeptieren (das Meta Tag zum Beispiel) ..), aber es scheint der Fall zu sein .. –

4

die HTTP-Antwort-Header-Informationen der Browser bewirkt, dass die Informationen als XML interpretieren:

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 

Sie sehen, der Server, der die Seite war klug genug, serviert zu erkennen, dass dies ein XML-Dokument, und sagte dem Browser. Wenn Sie die Datei von der Festplatte laden, ist Ihr Browser möglicherweise nicht intelligent genug, um dies zu tun, und verlässt sich normalerweise auf die Erweiterung der Datei, um diese Informationen bereitzustellen.

Sie könnten versuchen, die folgende in das <head> Element eingefügt:

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

Sie sehen, was ich da tat? Es ist nur eine Spiegelung des HTTP-Antwortheaders, der den Dokumenttyp und die Codierung angegeben hätte.

Der Zweck dieses Tags ist es Browser zu denken, "Hey, der Server sagt mir, dass dieses Dokument HTML ist, aber das Dokument sagt mir, es ist XML. Das Dokument weiß wahrscheinlich besser als der Server, also ich ' Ich vertraue darauf ... :: interpretiert als XML :: "

+2

das sollte der fall sein aber leider ist es nicht .. es wird es immer noch nicht richtig rendern .. –

+0

Leider hat Gaby recht. Es funktioniert nicht. Sie haben eine elegante Lösung Amphetamachine, aber der Browser ignoriert es. Frustrierend. – Axeva

+0

Browser = dumm – amphetamachine

Verwandte Themen