Announcement

Collapse
No announcement yet.

SVG - Object in SVG einbinden

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • #16
    Im Idealfall sollte das so wie im folgenden Dokument funktionieren:
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" xmlns:xlink="http://www.w3.org/1999/xlink">
    <head>
    <title>SVG use test</title>
    <script type="text/javascript">
    function setUsedFill(uId, fill) {
      document.getElementById(uId).instanceRoot.correspondingElement.setAttributeNS(null, 'fill', fill);
    }
    </script>
    </head>
    <body>
    <div>
    <input type="button" value="test"
           onclick="setUsedFill('uc1', 'yellow');"/>
    </div>
    <div>
    <svg xmlns="http://www.w3.org/2000/svg" width="300" height="300">
      <defs>
        <circle id="c1" cx="50" cy="50" r="30" fill="green"/>
      </defs>
      <use id="uc1" x="0" y="0" xlink:href="#c1"></use>
    </svg>
    </div>
    </body>
    </html>
    instanceRoot.correspondingElement wird aber nur von Opera und Chrome und IE 9 unterstützt, von Firefox/Mozilla gar nicht (schon instanceRoot ist null). Und Chrome und IE 9 unterstützen bei "use xlink:href" keine externe Datei, Opera erlaubt sie, aber dann funktioniert instanceRoot.correspondingElement nicht mehr.
    So recht gibt es also keine Kombination, die deiner Idee, SVG-Objekte aus einer externen Datei zu instanziieren und auch manipulieren zu können, gerecht wird.

    Comment


    • #17
      Ja das kommt der Lösung schon sehr nahe, der FF ist ist ein Problem.

      Was hälts du von folgen Lösungsansätzen:
      1.
      Code:
      <use x="0" y="0" xlink:href="someFile.svg#c1"></use>
      Aufgelöst mit js etwas aufgeblasen - jedoch ist ein Zugriff möglich

      http://stackoverflow.com/questions/5...vg-with-webkit


      2. Etwas Exotisch
      Das SVG Oject in svg als foreignObject element einbinden

      http://www.w3.org/TR/SVG/extend.html


      Was sagst du?

      Comment


      • #18
        Mit foreignObject kenne ich mich wenig aus, schon gar nicht um dann damit SVG einzubinden.

        Wenn du per XMLHttpRequest SVG-Dokumente oder -Fragmente laden willst und dann einfügen willst, dann sollten alle außer IE inzwischen adoptNode (http://www.w3.org/TR/DOM-Level-3-Cor...ent3-adoptNode) für Knoten aus dem responseXML unterstützen, mit IE 9 würde ich statt der Lösung auf Stackoverflow eher new DOMParser().parseFromString(request.responseText, 'application/xml') anwenden, und dann kann man per adoptNode ja auch mit IE 9 Knoten aus dem von DOMParser erzeugten XML-DOM-Dokument in das HTML-DOM-Dokument von IE einfügen.

        Comment


        • #19
          Danke für deine Unterstützung. Ich probiere erstmal einiges, leider habe ich noch keine Lösung

          Comment

          Working...
          X