11548 sujets

JavaScript, DOM et API Web HTML5

Salut à tous,

je travaille sur un projet de carte dynamique en SVG, faisant donc appel à du javascript pour animer tout ca. Je souhaite que l'utilisteur puisse avoir la possibilité de créer des points en ligne. Pour ce faire, j'utilise la fonction CreateElement. Le script marche trés bien sous IE, mais rien ne se passe sous fireofox, et je n'ai meme pas de message d'erreur dans la console javascript, je ne comprend rien.

Voila mon code:

<?php header("Content-type: image/svg+xml");
echo '<?xml version="1.0" standalone="no"?>';?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"           
"http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd">
<svg id="carte" width="700" height="500" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg"  >
<script><![CDATA[
function create_child(evt){
	new_node = evt.target.ownerDocument.createElement('circle')	
	xm=evt.clientX;
	ym=evt.clientY;	
	new_node.setAttribute("cx",xm)
	new_node.setAttribute("cy",ym)
	new_node.setAttribute("r","10")
	new_node.setAttribute("style","fill:yellow")			
  	// new_node.setAttribute("onmousemove","moving(evt);");
	// new_node.setAttribute("onmousedown","active();");
	// new_node.setAttribute("onmouseup","descative();"); 	
 	// new_node.addEventListener("mousemove", moving, false)
	// new_node.addEventListener("mousedown", active, false)
	// new_node.addEventListener("mouseup", desactive, false)   
evt.target.ownerDocument.getElementById("fond").appendChild(new_node);}
]]></script>

<svg id="fond_carte" width="500" height="400" x="0" y="0">
<g id="fond">  
<rect id="dessin" x="0" y="0" onclick="create_child(evt)"  width="500" height="400" fill="red" fill-opacity="0.1"/> 
</g> 
 />
</svg>	
</svg>


Je voulais aussi que sur les points créés je puisse attribuer des evenements mais ca ca ne marche sur avec aucun des 2 navigateurs et aucune des 2 manieres que j'ai essayer.

Voila, si quelqu'un à des idées pour tenter de me debloquer, elles sont les bienvenues!

Merci
Modifié par gussoner (08 Jun 2006 - 09:28)
Euh... c'est à dire passer event à la fonction, je comprend pas trop.. Dans ma fonction, je mets bien evt, c'est comme event(/b], non?
Up!
Smiley lol

Toujours degun pour m'aider?? Ca fait 15 jours et je n'ai toujours pas reussi à resoudre le probleme, et ca commence à devenir trés genant pour moi...

Merci
Salut,

Ton problème vient du fait que lorsque l'élément est créé, aucun namespace n'est trouvé (y'a surement qqchose à régler de ce côté, mais je ne vois pas). Je m'en suis aperçu sous Firefox en faisant "Sélectionner tout" puis "Afficher la source de la sélection." après avoir cliqué sur le rectangle.

Utilises plutôt "createElementNS" (DOM2) qui prend le namespace en premier paramètre.

new_node = evt.target.ownerDocument.createElementNS('http://www.w3.org/2000/svg', 'circle')


Après ça, ça marche apparemment, et le reste en commentaire à l'air correct (pour les évènements).
Smiley cligne
Salut,

merci, c'est bien cool de m'avoir aidé, maintenant ya tout qui marche, et ca fait bien plaisir! Smiley lol Smiley lol

++