# SVG Javascript Zugriffsproblem mit Firefox und Opera



## kennenburg (22. März 2005)

Hallo,

wer kan mir bei dem folgenden Problem helfen:

ich versuche auf ein SVG Object mit Javascript zuzugreifen.
Das funktioniert auch alles mit IE und Netscape aber nicht im Firefox und nicht im Opera!?

Wäre für eine Hilfe sehr dankbar

Hier der Codeausschnitt:


<script> 
function SetSVGValues()
{
         svgdoc=parent.frames["svg"].document.embeds[0].getSVGDocument().rootElement; 
	 svgdoc.getElementById('63').style.setProperty("visibility","hidden"); 
}

</script>

<table border="0">
<tr><td>
<form action="">
<input type="radio" name="svgobj" value="po" onClick="SetSVGValues()">Unsichtbar
</form>

<iframe name="svg" src="PKW_komplett_sensitive_ISODRAW61.svg" width="400" height="800" frameborder="0">
  <p>Zur Anzeige der Grafik wird ein Browser-PlugIn (Viewer) ben&ouml;tigt, z. B. der <a href="http://www.adobe.com/svg/viewer/install/main.html">SVG Viewer 3.0 von Adobe</a>!</p>
</iframe>
<br>
</td></tr>
</table>


----------



## Malleus (22. März 2005)

Ich glaub', FF und Opera akzeptieren keine Zahlen als ID.


```
svgdoc.getElementById('63').style.setProperty("visibility","hidden");
```


----------



## kennenburg (22. März 2005)

Danke für die Antwort! 

Aber das war es leider nicht. 
Geht immernoch nicht unter Firefox und Opera.


----------



## Malleus (22. März 2005)

Ich hab' keine Ahnung von "SVG", aber schreibt man normalerweise nicht anstelle von


```
svgdoc.getElementById('63').style.setProperty("visibility","hidden")
```

so etwas:


```
svgdoc.getElementById('63').style.visibility="hidden";
```

Was kommt denn eigentlich für eine Fehlermeldung bzw. in welcher Zeile?


----------



## kennenburg (22. März 2005)

Also das folgende ist schon richtig, man muss auf die einzelnen Eigenschaften schon zugreifen bei svg:


```
svgdoc.getElementById('63').style.setProperty("visibility","hidden")
```

Es funktioniert im IE und Netscape einwandfrei. Im Firefox und Opera kommt keine Fehlermedung, es funktioniert einfach nix. Das Feld wird nicht unsichtbar gemacht.

Kenn mich leider auch nicht allzu gut in svg aus. Hab mich erst seit ein paar eingearbeitet.


----------



## Malleus (22. März 2005)

Blöde Frage, ich weiß, aber hast Du ein Plugin für die beiden Browser installiert?


----------



## kennenburg (22. März 2005)

lol Ja, hab ich gemacht. Das SVG Bild wird angezeigt.
Muss an irgendwelchen Funktionen hängen, die Firefox nicht interpretieren kann.


----------



## Malleus (22. März 2005)

T'schuldigung, aber manchmal sind es die einfachsten Sachen!

Kennst Du den Mozilla Debugger "Venkman", den könntest Du ja 'mal installieren. Damit kannst "Zeile für Zeile" abarbeiten. Vielleicht bringt es ja was.


----------



## ad1 (12. Januar 2009)

Überprüfe ob die Seite mit Firefox oder mit IE geladen wird. Falls Firefox, lade das svg in ein <object> bei IE <embed>.


----------



## Sven Mintel (14. Januar 2009)

Moin,

Ich habe jetzt keine Ahnung, wie dieses SVG-Dokument aussieht(mich verwundert, dass der IE dort embeds findet, ich wüsste nicht, dass SVG soetwas kennt), aber generell solltest du in den Problembrowsern darauf folgendermassen Zugriff erlangen, wenn es sich in einem Frame befindet:


```
svgdoc=parent.svg.document;
```

Weiterhin: setProperty() erwartet 3 Parameter.
Auch wenn der 3. derzeit  keinen Zweck erfüllt, musst du ihn übergeben, da es sonst zu einem Fehler kommt,... übergebe einfach einen leeren String.


----------

