内联SVG vs <object>嵌入式

Inline SVG vs <object> embedded

本文关键字:object 嵌入式 SVG vs 内联      更新时间:2023-09-26

我正在为《星战前夜》创造一款游戏内浏览器RoR应用。我的应用程序的要求之一是显示由graphviz生成的SVG图形。在这个环境中,我遇到了一些问题,无法满足我的需求。

没有关于Eve的IGB的官方文档,但是维基表明:

新的EVE Online游戏内浏览器(代号Moondoggie)是基于结合两个元素的技术堆栈:

Awesomium:一个中间件层,将渲染后的网页作为3D引擎可解析的数据传递。Awesomium是由Khrona Software开发的。

Chromium:一个中间件层,提供进程间通信、网页渲染、HTTP通信以及编写web浏览器所需的所有其他基础。它本身是基于苹果的Webkit框架。Chromium是一个主要由Google支持的开源项目。

正因为如此,Moondoggie能够通过Acid3测试,因此可以支持完整的HTML 4.01和CSS3规范。

我需要我在SVG中包含的链接来访问我的应用程序的javascript。嵌入它与<embed><object>使SVG超出了我的JS文件的范围。

使用<embed><object>可以在游戏内浏览器中正确渲染svg。当它像下面这样内联时,它显示一行文本,其中只包含来自SVG的文本元素。

这就是我现在的处境。我很确定这大部分是多余的,因为我没有注意到仅仅使用render file:在我自己的视图中有什么不同。我认为mime类型注册更适合与respond_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函数?

可以在父文档的中访问文档。这是ACID3仍在测试的svg内容之一(太少了)。

下面是一个如何从父html文档中的脚本修改svg文档的示例。