Doctype проблема отображения SVG с Safari - PullRequest
1 голос
/ 25 мая 2011

У меня есть несколько SVG-изображений, которые я хотел бы разместить на странице. Firefox и Chrome не доставили мне никаких проблем, но Safari, похоже, отображает изображение SVG только в том случае, если документ имеет расширение «.xhtml». Если я попытаюсь использовать код PHP (и, следовательно, расширение «.php»), точно такая же разметка, которую я использовал в документе «.xhtml», больше не будет отображать изображение SVG. Проблема, конечно, я должен использовать PHP для проекта под рукой. Какие-либо предложения? Вот исходный код:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:lang="de" xmlns:xml="http://www.w3.org/XML/1998/namespace">
<head>
<title>SVG Safari Test</title>
</head>
<body>
<!-- Generator: Adobe Illustrator 15.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="500px" height="500px" viewBox="0 0 500 500" enable-background="new 0 0 500 500" xml:space="preserve"><circle cx="250" cy="250" r="238.048"/></svg>
</body>
</html>

Ответы [ 2 ]

9 голосов
/ 25 мая 2011

Причина, по которой .xhtml работает в Safari, а .html - в том, что Safari должен обрабатывать документ как XML, чтобы разрешить встроенный SVG. В последних версиях Firefox и Chrome используется HTML5-парсер , который позволяет встраивать SVG в простые документы HTML, поэтому они должны работать с обоими.

Чтобы он правильно отображался в Safari, вам нужно установить тип контента application/xhtml+xml. Используйте это в своем PHP-файле перед выводом любого содержимого:

<?php
header('Content-type: application/xhtml+xml');
?>
0 голосов
/ 25 мая 2011

вы можете настроить свой php config для обработки файлов xhtml.

В этом примере я предполагаю, что вы используете apache в debian / ubuntu

вы можете посмотреть в файле /etc/apache2/mods-enabled/php5.conf

<IfModule mod_php5.c>

<FilesMatch "\.xhtml$">
SetHandler application/x-httpd-php
</FilesMatch>

</IfModule>

Эта директива SetHandler может быть в другом файле, если вы используете другой веб-сервер, дистрибутив или ОС ...

при условии, что вы работаете в Unix, просто запустите каталоги / etc / apache или / etc / httpd

grep -Ri sethandler /etc/apache
...