Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/02/2011, 15h06   #1
Membre du Club
 
Inscription : novembre 2008
Messages : 270
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 270
Points : 50
Points : 50
Par défaut Accéder un élément XML présent comme plugin dans une page HTML

Bonjour,

Dans ma page XHTML j'ai une balise embed qui a comme source un fichier XML pour créer des entités SVG.
Code :
<embed src="image.svg" width="1000" height="1000" type="image/svg+xml" pluginspage="http://www.adobe.com/svg/viewer/install/" />
J'ai donc des éléments SVG comme plugin dans ma page. Je veux accéder à ces éléments SVG et leur associer des événements en l'occurrence l'événement onclick.
Voici le fichier xml (*.svg)
Code :
1
2
3
4
5
6
7
<?xml version='1.0' standalone='no'?>
<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>
<svg style='cursor:crosshair' width='1000' height='1000' version='1.1' xmlns='http://www.w3.org/2000/svg'>
<path fill='lightsteelblue' stroke='midnightblue' stroke-width='5' d='M 10 10 L 10 20 20 20 20 15 Z '/>
<path fill='lightsteelblue' stroke='midnightblue' stroke-width='5' d='M 100 100 L 150 100 200 300 100 350 Z '/>
<path fill='lightsteelblue' stroke='midnightblue' stroke-width='5' d='M 50 500 L 100 650 65 800 20 700 Z '/>
</svg>
Ce fichier est créé avec PHP suite à des requêtes.
Pour attacher l'événement onclick à l'élément svg, j'ai créé un script JS qui permet d'accéder au document SVG. Le voici :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function loadXMLDoc(dname)
{
if (window.XMLHttpRequest)
  {
  xhttp=new XMLHttpRequest();
  }
else
  {
  xhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xhttp.open("GET",dname,false);
xhttp.send();
return xhttp.responseXML;
}
Ensuite j'accède au SVG dans un script JS
Code :
1
2
var doc =loadXMLDoc("image.svg");
				var svg = doc.getElementsByTagName("svg")[0];
Finalement, je traite les instructions à exécuter dans le cas d'un click sur la balise svg (affichée sur ma page)
Code :
svg.addEventListener("click", function() {...},false);
Lorsque je clique sur le svg : RIEN !

Je ne sais pas où est l'erreur ...
yo_haha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2011, 17h11   #2
Expert Confirmé
 
Avatar de sekaijin
 
Femme
Urbaniste
Inscription : juillet 2004
Messages : 1 419
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 48
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 1 419
Points : 2 806
Points : 2 806
niet niet niet
lorsque tu fait un embed tu donne la main à un plugin qui charge le SVG
lorsque tu fait un loadXMLDoc tu charge une deuxième fois le svg
tu as donc deux DOM SVG celui qui est dans le plugin et celui qui est dans ton doc principal (chargé par loadXMLDoc)

j'imagine que tu utilise un plugin comme celui-d'adobe ou le composant interne de FireFox ou de webKit

je te conseille de lire la doc de ses plugin pour savoir comment accéder au dom du SVG chargé car c'est le seul moyen d'inter agir avec le SVG qui s'exécute

le principe est le suivant mettre un id sur le embed
Code :
<embed scr='my.svg' id='mySVG' ....>
puis dans le javascript récupérer le dom généré par le plugin
Code :
1
2
3
4
5
mySvgDom=document.getElementById('mySVG').getSVGDocument();
//accéder à un élément du dom SVG
myRect=mySvgDom.getElementById('aRect');
//ajouter onclick su le rect
myRect.addEventListener("click", function() {...},false);
ceci est le principe de base mais ça dépend surtout du plugin utilisé
pour safari google chrome voir la doc de Webkit pour firefox voir la doc de mozilla
et pour tout autre plugin voir la doc du plugin

A+JYT
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2011, 19h32   #3
Membre du Club
 
Inscription : novembre 2008
Messages : 270
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 270
Points : 50
Points : 50
ça marche ! Merci beaucoup
yo_haha est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h21.


 
 
 
 
Partenaires

Hébergement Web