SVG per Javascript neu laden
mariu
- javascript
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
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
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?
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