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 13/12/2011, 23h23   #1
Invité de passage
 
Inscription : décembre 2011
Messages : 2
Détails du profil
Informations forums :
Inscription : décembre 2011
Messages : 2
Points : 0
Points : 0
Par défaut Obligation d'ajouter des éléments d'un seul coup

Bonjour,

désolé pour le titre, j'avoue ne pas trop avoir trop su comment intituler ce sujet.

Voilà, j'essaie d'insérer du texte (via la balise TEXT) dans un élément SVG. En travaillant, je suis tombé sur un résultat qui m'a plutôt surpris :

Code :
$("#schedule").append('<svg id="test2" xmlns="http://www.w3.org/2000/svg" version="1.1"><text transform="rotate(30 0 0)">blabla</text></svg>');
Ce code marche sans problème.
Code :
1
2
$("#schedule").append('<svg id="test1" xmlns="http://www.w3.org/2000/svg" version="1.1"></svg>');
        $("#test1").append('<text transform="rotate(30 0 0)">blabla</text>');
Celui-ci, pas vraiment.

Mon problème est que le deuxième code n'affiche rien à l'écran, alors que l'élément TEXT semble bien avoir été ajouté, comme le montre cette capture d'écran :



J'avoue ne pas comprendre ce qui différencie les deux codes, et pourquoi j'obtiens un résultat différent. Si quelqu'un pouvait m'éclaircir sur ce point, je lui en serais grandement reconnaissant.

Merci d'avance.
phpdoesnotcare est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2011, 01h16   #2
Rédacteur
 
Avatar de danielhagnoul
 
Homme Daniel Hagnoul
Étudiant perpétuel
Inscription : février 2009
Messages : 3 221
Détails du profil
Informations personnelles :
Nom : Homme Daniel Hagnoul
Âge : 61
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant perpétuel
Secteur : Enseignement

Informations forums :
Inscription : février 2009
Messages : 3 221
Points : 6 767
Points : 6 767
Bonsoir

jQuery peut manipuler le HTML, mais pas le SVG. De plus le DOM HTML est différent de celui du SVG.

Dans le premier cas, vous insérer un texte qui contient un code SVG complet et c'est le navigateur qui fait le travail pour produire du SVG. Dans le deuxième cas, vous introduisez simplement un texte dans la page.

J'ai passé un peu de temps pour fouiller l'Internet à la recherche d'une hypothétique solution miracle, mais je n'ai rien trouvé de convaincant.
__________________

FAQ jQuery

Mon cahier d’exercices sur jQuery & Co

Si un message vous a aidé ou vous semble pertinent, votez pour lui !
danielhagnoul est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2011, 01h39   #3
Invité de passage
 
Inscription : décembre 2011
Messages : 2
Détails du profil
Informations forums :
Inscription : décembre 2011
Messages : 2
Points : 0
Points : 0
Ca explique tout, alors. Merci beaucoup !

Aucune chance de pouvoir modifier la rotation d'un élément text via javascript, alors ? (même sans passer par jQuery)

Ici, par exemple, ils semblent parler de le faire.
phpdoesnotcare est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2011, 12h34   #4
Membre chevronné
 
Homme Krusty
Inscription : mai 2009
Messages : 472
Détails du profil
Informations personnelles :
Nom : Homme Krusty
Localisation : France

Informations forums :
Inscription : mai 2009
Messages : 472
Points : 617
Points : 617
dans l'exemple que tu montre il uyilise le dom

en dom sa donne ca

Code :
1
2
3
4
5
6
7
8
9
10
var gvs=document.createElement('svg');
gvs.setAttribute('xmlns','http://www.w3.org/2000/svg" version="1.1');
gvs.id='test1'
 
var txt=document.createElement('text');
txt.setAttribute('transforme','rotate(30 0 0)');
txt.firstChild.nodeValue='blabla'
 
gvs.appendChild(txt);
document.getElementById("schedule").appendChild(gvs);
__________________
programmer n'est pas connaitre tous les moindres détails d'un langage mais savoir exploiter sous toutes ses facettes ce que l'on connait.
mekal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2011, 20h44   #5
Membre Expert
 
Avatar de Watilin
 
Homme Matilin Torre
Étudiant
Inscription : juin 2010
Messages : 679
Détails du profil
Informations personnelles :
Nom : Homme Matilin Torre
Âge : 23
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2010
Messages : 679
Points : 1 202
Points : 1 202
Ton script ne marche pas Mekal :/

Je me suis déjà heurté à la barbarie du DOM SVG. J'avais abandonné assez vite, mais je me souviens qu'il faut utiliser createElementNS pour que l'élément soit reconnu comme une balise SVG.

Code console :
1
2
3
4
>>> document.createElement('text').constructor
HTMLUnknownElement {}
>>> document.createElementNS('http://www.w3.org/2000/svg', 'text').constructor
SVGTextElement {}

Je vais me replonger dedans je crois
__________________
Disposition de clavier ergonomique française : Bépo
Watilin est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h43.


 
 
 
 
Partenaires

Hébergement Web