Встроенный SVG vs <объект> встроенный

Я создаю приложение 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?

Ответ 1

Можно получить доступ к документу внутри объекта <object> или <embed> из родительского документа. Это один из (слишком мало) SVG-объектов, которые ACID3 все еще тестирует.

Вот пример о том, как изменить документ SVG из script в родительском HTML документа.