Я создаю приложение RoR для браузера в Интернете для Eve Online. Одним из требований моего приложения является отображение SVG-графика, созданного с помощью Graphviz. У меня возникли некоторые проблемы, связанные с удовлетворением моих требований в этой среде.
Официальная документация не доступна для Eve IGB, но wiki указывает:
Новый интерактивный браузер EVE Online (кодовое название Moondoggie) основан на стеке технологий, объединяющем два элемента:
Awesomium: слой промежуточного слоя, который предоставляет отображаемые веб-страницы в качестве данных, обрабатываемых 3D-движком. Awesomium разработан компанией Khrona Software.
Chromium: уровень промежуточного уровня, который обеспечивает межпроцессную связь, рендеринг веб-страниц, HTTP-связь и все другие основы, необходимые для написания веб-браузера. Оно само по себе основано на структуре Apples 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?