2010-02-21 2 views
6

Я в замешательстве.Почему SVG не работает с локальными файлами HTML?

Если я указываю в браузере (Chrome или Safari на OSX) на данном веб-сайте, он показывает все SVG отлично:

http://emacsformacosx.com/

Теперь, если я рассматриваю источник на этой странице, скопируйте его, и вставьте его в новый HTML-документ на моем рабочем столе, а затем просмотрите его в любом браузере, я вообще не получаю SVG.

Почему разница?

Почему SVG работает на веб-сайте, но не в локальном HTML-файле?

Спасибо!

ответ

8

Вы переименовали его в HTML, а браузер предполагает содержание HTML .. в то время как страница text/xml ..

если переименовать его в .xml и открыть его, вы увидите это просто отлично ..

+0

Подтверждено. Воспроизведено и исправлено с использованием этого метода в Mac OS X 10.6.2 – pestilence669

+0

Интересно. Должны ли все документы HTML5 иметь расширение .xml или это просто функция наличия SVG в документе? – Axeva

+0

Я просто немного поиграл, и кажется, что и FF, и Chrome также отображают правильное расширение '.xhtml' ... Похоже, неправильно, что они не согласятся с определением содержимого изнутри файла (например, метатег ..), но, похоже, это так. –

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

, что должно быть, но, к сожалению, это не так .. он все равно не сделает это правильно .. –

+0

К сожалению, Габи прав. Это не работает. Вы придумали элегантное решение Amphetamachine, но браузер игнорирует его. Разочарование. – Axeva

+0

Браузеры = глупо – amphetamachine

Смежные вопросы