2010-02-21 14 views
6

Estoy confundido.¿Por qué SVG no funciona en archivos HTML locales?

Si señalo por el navegador (Chrome o Safari en OS X) a este sitio web, que muestra todo el SVG perfectamente:

http://emacsformacosx.com/

Ahora, si me vista de origen de esa página, copiarlo, y pegarlo en un nuevo documento HTML en mi escritorio, y luego verlo con cualquiera de los dos navegadores, no obtengo ningún SVG.

¿Por qué la diferencia?

¿Por qué SVG trabaja en el sitio web, pero no en el archivo HTML local?

Gracias!

Respuesta

8

le cambió el nombre a HTML y el navegador asume el contenido HTML .. mientras que la página es text/xml ..

si cambia el nombre a .xml y lo abre, verá que bien ..

+0

Confirmado. Reproducido y corregido utilizando este método en Mac OS X 10.6.2 – pestilence669

+0

Interesante. ¿Deberían todos los documentos HTML5 tener una extensión .xml, o es solo una función de tener SVG en el documento? – Axeva

+0

solo jugué un poco y parece que tanto FF como Chrome también se muestran correctos con una extensión '.xhtml' ... Parece completamente incorrecto que no acepten una definición de contenido dentro del archivo (la metaetiqueta por ejemplo ..), pero parece ser el caso ... –

4

la información del encabezado de respuesta HTTP hace que el navegador para interpretar la información como 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 

Usted ve, el servidor que sirve la página fue lo suficientemente inteligente como para detectar que se trataba de un documento XML, y le dijo al navegador. Cuando carga el archivo desde el disco, es posible que su navegador no sea lo suficientemente inteligente como para hacerlo y tienda a confiar en la extensión del archivo para proporcionar esta información.

Usted podría intentar insertar el siguiente en el elemento <head>:

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

Ves lo que hice allí? Es solo un reflejo del encabezado de respuesta HTTP que habría especificado el tipo de documento y la codificación.

El propósito de esta etiqueta es hacer que los navegadores piensen: "Oye, el servidor me dice que este documento es HTML, pero el documento me dice que es XML. El documento probablemente sabe mejor que el servidor, entonces yo ' Lo confiaré ... :: se interpreta como XML :: "

+2

ese debería ser el caso, pero desafortunadamente no lo es ... aún no lo renderizará correctamente. –

+0

Desafortunadamente, Gaby tiene razón. No funciona Has encontrado una solución elegante Amphetamachine, pero el navegador la está ignorando. Frustrante. – Axeva

+0

navegadores = estúpido – amphetamachine

Cuestiones relacionadas