mariu: SVG per Javascript neu laden

Alsooooo

Ich habe eine Webseite auf der ich ein kleines Menu mit <selects> habe und einem <objekt> welches eine von php generierte SVG-Grafik enthalten soll.
Ändert man jetzt ein Feld im Menu wird das mit "onchange" abgefangen und folgendes Script ausgeführt:

Feldhoehe ist ein Wert aus dem Menu.
...
document.getElementById("MainVorschauBild").data="vorschau.php?Feldhoehe="+Feldhoehe;
document.getElementById("test").href="vorschau.php?Feldhoehe="+Feldhoehe;
...

Der Link "test" wird anstandslos aktualisiert, auch mit den Variablen im href. Das Object "MainVorschauBild" bleibt allerdings stur und möchte nicht.
Ruft man den php-link unter dem das Bild generiert wird von Hand auf, funktioniert das einwandfrei.

Warum aktualisiert der denn das <objekt> nicht ???

PS: WindowsXP, Mozilla FF 2, Adobe SVG Viewer 3.03

  1. Tach mariu,

    Warum aktualisiert der denn das <objekt> nicht ???

    »»

    PS: WindowsXP, Mozilla FF 2, Adobe SVG Viewer 3.03

    data-Attribute verhalten sich (bekanntlich) statisch, d. h. beim Neuzuweisen einer Ressource wird diese nicht neu geladen. Entferne das object-Element und erzeuge es nebst data-Attribut neu oder verwende für die SVG-Einbindung ein iframe-Element. Hier lässt sich das src-Attribut entsprechend manipulieren. Zudem entfällt die lästige ActiveX-Klick-Bestätigung im IE.

    Man liest sich,
    svg4you

  2. var vorschauKnoten = document.getElementById("MainVorschau").firstChild;
    verschwunden = document.getElementById("MainVorschau").removeChild(vorschauKnoten);

    var newEmbed = document.createElement("embed");

    newEmbed.setAttribute("id","MainVorschauBild");
    newEmbed.setAttribute("width","600");
    newEmbed.setAttribute("height","500");
    newEmbed.setAttribute("type","image/svg+xml");
            newEmbed.setAttribute("data","Vorschau.php?Feldhoehe="+feldhoehe);
    document.getElementById("MainVorschauBild").appendChild(newEmbed);

    Also "MainVorschauBild" ist ein <embed> im <div> "MainVorschau", und auch das einzige.
    Allerdings geht hier mal garnix. Woran liegts, ich seh den Fehler einfach nicht, oder hab ich was grundlegendes Flasch gemacht?

    1. Tach mariu,

      var newEmbed = document.createElement("embed");
      ...
      newEmbed.setAttribute("data","Vorschau.php?Feldhoehe="+feldhoehe);

      Das proprietäre embed-Element kennt ein src-Attribut, jedoch kein data-Attribut.

      Ansonsten würde ich den Besuchern zuliebe auf iframe ausweichen.

      Man liest sich,
      svg4you