Bonjour,
C'est très bizarre, car voyez-vous la présente fonction permettant d'ajouter un noeud dans une structure via DOM semble ne pas fonctionner sur de l'SVG.
Voici mon cas. J'ai une page index.xhtml :
Et j'ai un fichier décrivant ma fonction :
Comme vous pouvez le voir, le but du script est juste d'ajouter
En revanche, si j'essaye d'ajouter ça dans le bloc ici_ca_marche... ça marche
Il en est ainsi pour Firefox 2 et Opera. Et en passant par
Néanmoins, j'ai constaté une chose étonnante : après avoir cliqué sur le bouton Add dans Firefox 2, il est possible de voir que le nouveau noeud a bien été ajouté dans la structure moyennant une sélection de la page et un affichage de la source de cette sélection. En voici une copie :
Donc en gros, la mise à jour de l'image SVG a bien eu lieu... mais elle n'est pas visible. Etrange...
Si vous voulez tester chez vous, n'hésitez pas. Et si vous avez une idée, alors là ça serait génial
Merci bcp
T5in9Tao
Modifié par tsing (10 Jun 2007 - 10:55)
C'est très bizarre, car voyez-vous la présente fonction permettant d'ajouter un noeud dans une structure via DOM semble ne pas fonctionner sur de l'SVG.
Voici mon cas. J'ai une page index.xhtml :
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<script type="text/javascript" src="add.js"></script>
</head>
<body>
<h1 id="ici_ca_marche">Foo</h1>
<hr />
<p>
<button onclick="add();">Add</button>
</p>
<hr />
<svg xmlns="http://www.w3.org/2000/svg" width="600" height="400">
<g id="ici_ca_ne_marche_pas">
<circle cx="150" cy="100" r="50" style="fill: black;" />
</g>
</svg>
</body>
</html>
Et j'ai un fichier décrivant ma fonction :
function add() {
var bar = document.createElement("circle");
bar.setAttribute("cx", "100");
bar.setAttribute("cy", "110");
bar.setAttribute("r", "60");
bar.setAttribute("style", "fill:yellow;");
document.getElementById('ici_ca_ne_marche_pas').appendChild(bar);
}
Comme vous pouvez le voir, le but du script est juste d'ajouter
a écrit :dans le bloc identificable par ici_ca_ne_marche_pas. Et ça ne marche pas.
<circle cx="100" cy="110" r="50" style="fill:yellow;"/>
En revanche, si j'essaye d'ajouter ça dans le bloc ici_ca_marche... ça marche
Il en est ainsi pour Firefox 2 et Opera. Et en passant par
document.getElementById('ici_ca_ne_marche_pas').innerHTML = "<circle cx="100" cy="110" r="50" style="fill:yellow;"/>";
le problème reste le même Néanmoins, j'ai constaté une chose étonnante : après avoir cliqué sur le bouton Add dans Firefox 2, il est possible de voir que le nouveau noeud a bien été ajouté dans la structure moyennant une sélection de la page et un affichage de la source de cette sélection. En voici une copie :
<h1 id="ici_ca_marche">Foo</h1>
<hr/>
<p>
<button onclick="add();">Add</button>
</p>
<hr/>
<svg xmlns="http://www.w3.org/2000/svg" width="600" height="400">
<g id="ici_ca_ne_marche_pas">
<circle cx="150" cy="100" r="50" style="fill: black;"/>
<circle cx="100" cy="110" r="60" style="fill: yellow;"/></g>
</svg>
Donc en gros, la mise à jour de l'image SVG a bien eu lieu... mais elle n'est pas visible. Etrange...
Si vous voulez tester chez vous, n'hésitez pas. Et si vous avez une idée, alors là ça serait génial
Merci bcp
T5in9Tao
Modifié par tsing (10 Jun 2007 - 10:55)