Я создаю браузерное приложение для RoR для Eve Online. Одним из требований моего приложения является отображение SVG-графика, созданного с помощью Graphviz. У меня возникли некоторые проблемы, связанные с удовлетворением моих требований в этой среде.Inline SVG vs <object> встроенный
Никакая официальная документация не доступна IGB Евы, но вики указывает:
Новый EVE Online в игре браузера (под кодовым названием Moondoggie) основана на стек технологии сочетания двух элементов:
Awesomium: слой промежуточного слоя, который предоставляет отображаемые веб-страницы как данные, обрабатываемые 3D-движком. Awesomium разработан компанией Khrona Software.
Chromium: Уровень промежуточного слоя, который обеспечивает межпроцессную связь, рендеринг веб-страниц, HTTP-связь и все другие основы, необходимые для написания веб-браузера. Это само по себе основано на структуре Apple Webkit. Chromium - проект с открытым исходным кодом, отстаиваемый главным образом Google.
Из-за этого Moondoggie может пройти тест Acid3 и, следовательно, может поддерживать полные спецификации HTML 4.01 и CSS3.
Мне нужны ссылки, которые я включаю в SVG, чтобы иметь доступ к javascript моего приложения. Встраивая его в <embed>
или <object>
, выкладывает SVG из объема моих файлов JS.
Использование <embed>
или <object>
ДЕЙСТВИТЕЛЬНО визуализирует svg в игровом браузере. Когда он встроен, как показано ниже, он отображает одну строку текста, содержащую JUST текстовые элементы из SVG.
Обновление Здесь я нахожусь. Я почти уверен, что большая часть этого избытка, поскольку я не заметил разницы, просто используя render file:
внутри своего представления сам по себе. Я думаю, что регистрация типа mime более подходит для использования с response_to, но я не уверен, как использовать это в этом сценарии.
фрагмент главного вида:
<%= render "map/map" %>
частичный вид файла:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:svg="http://www.w3.org/2000/svg">
<head>
<title>Embedded SVG</title>
</head>
<body>
<%= render file: @map.output_file_path %>
</body>
</html>
конфигурации/Инициализаторы/mime_types.rb:
Mime::Type.register "image/svg+xml", :svg
Я не понимаю, почему это делает мелкий внутри метки <object>
, но не когда встроенный. Как мне эмулировать среду внутри <object>
в моем основном представлении? Или, как я могу дать тегам <object>
доступ к моим функциям javascript?
Означает ли это, что этот браузер на основе Webkit не поддерживает HTML5? Использует ли XHTML 4 вариант? Для pre-HTML5, по моему опыту, XHTML - действительно самый многообещающий способ заставить его работать. –
Существует «прототип поддержки HTML5», но, похоже, он попал или промахнулся. Я не совсем уверен. Это буквально вся документация о том, что делает этот браузер и не поддерживает. Я не очень хорошо знаком с XHTML, и у меня нет хорошей справки по doctype, но я смотрю на это: http://www.w3.org/QA/2002/04/valid-dtd-list.html , Я предполагаю, что мне нужно использовать один из них вместо '' для использования XHTML? – sicks
Просто идея. Возможно, стоит посмотреть на то, что делают Google Charts. Они очень сильно используют SVG и Javascript, поэтому вы можете получить некоторые идеи. Возможно, вы можете заглянуть в круговую диаграмму на интерактивной галерее https://developers.google.com/chart/interactive/docs/gallery для идей. Я думаю, что они используют тег