Ich baue eine In-Game-Browser-RoR-App für Eve Online. Eine der Anforderungen meiner App ist die Anzeige eines von graphviz erzeugten SVG-Graphen. Ich habe Probleme, meine Anforderungen in dieser Umgebung zu erfüllen.Inline SVG vs <object> eingebettet
keine offizielle Dokumentation ist für Evas IGB zur Verfügung, aber das Wiki zeigt:
Die neue EVE Online im Spiel Browser (Codename Moondoggie) basiert auf einem Technologie-Stack der Kombination von zwei Elementen:
Awesomium: Eine Middleware-Schicht, die gerenderte Webseiten als Daten liefert, die von einer 3D-Engine analysiert werden können. Awesomium wird von Khrona Software entwickelt.
Chromium: Eine Middleware-Schicht, die Interprozesskommunikation, Webseitenrendering, HTTP-Kommunikation und alle anderen Grundlagen zum Schreiben eines Webbrowsers bereitstellt. Es basiert selbst auf Apples Webkit-Framework. Chromium ist ein Open-Source-Projekt, das hauptsächlich von Google unterstützt wird.
Aus diesem Grund ist Moondoggie in der Lage, den Acid3-Test zu bestehen und somit die vollständigen HTML 4.01- und CSS3-Spezifikationen zu unterstützen.
Ich brauche die Links, die ich in der SVG einschließe, um auf das Javascript meiner App zugreifen zu können. Durch die Einbettung mit <embed>
oder <object>
wird das SVG aus dem Bereich meiner JS-Dateien entfernt.
Mit <embed>
oder <object>
Rendern die Svg ordnungsgemäß im Browser im Spiel. Wenn es inline ist, wie ich es unten habe, zeigt es eine Textzeile an, die JUST die Textelemente vom SVG enthält.
Aktualisieren Hier ist, wo ich bin. Ich bin mir ziemlich sicher, dass das meiste überflüssig ist, da ich keinen Unterschied bemerkte, indem ich nur die render file:
in meiner eigenen Ansicht benutzte. Ich denke, die Mime-Typ-Registrierung ist eher für die Verwendung mit respond_to gedacht, aber ich bin mir nicht sicher, wie ich das in diesem Szenario verwenden soll.
Snippet Hauptansicht:
<%= render "map/map" %>
Teilansicht Datei:
<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>
config/initializers/mime_types.rb:
Mime::Type.register "image/svg+xml", :svg
Ich verstehe nicht, warum es macht gut in einem <object>
Tag, aber nicht inline. Wie emuliere ich die Umgebung in einem <object>
in meiner Hauptansicht? Oder, wie kann ich den <object>
Tag Zugang zu meinen Javascript-Funktionen geben?
Bedeutet dies, dass dieser Webkit-basierte Browser HTML5 nicht unterstützt? Verwenden Sie XHTML 4 als Option? Für Pre-HTML5 ist meiner Erfahrung nach XHTML der vielversprechendste Weg, um es zum Laufen zu bringen. –
Es gibt 'Prototyp-Unterstützung für HTML5', aber es scheint, Hit oder Miss. Ich bin mir nicht wirklich sicher. Das ist buchstäblich die ganze Dokumentation darüber, was dieser Browser tut und nicht unterstützt. Ich bin nicht wirklich vertraut mit XHTML, noch habe ich einen guten Umgang mit Doctype, aber ich schaue mir das an: http://www.w3.org/QA/2002/04/valid-dtd-list.html . Ich nehme an, dass ich eine von diesen anstelle von '' verwenden muss, um XHTML zu verwenden? – sicks
Nur eine Idee. Es könnte sich lohnen, zu sehen, was Google Charts tut. Sie verwenden ziemlich viel SVG und Javascript, so dass Sie vielleicht einige Ideen dort bekommen können. Vielleicht können Sie das Tortendiagramm in der interaktiven Galerie https://developers.google.com/chart/interactive/docs/gallery nach Ideen durchsuchen. Ich denke, dass sie das