IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Utilisation de <defs> et javascript


Sujet :

JavaScript

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 414
    Par défaut Utilisation de <defs> et javascript
    Bonsoir à tous,
    Ce soir je galère depuis quelques heures sur un problème de SVG. Je veux tracer des « boutons » sur une page formulaire, pour ce faire j'ai un cadre (un rectangle en fait) avec un fond en dégradé tout marche bien jusque-là. Mon problème est quand je veux insérer un motif graphique venant d'Illustrator (type revenir en arrière ou réinitialiser) dans le rectangle de départ j'ai mis le fond en définition et lorsque je veux importer le graphisme, en utilisant JavaScript, rien ne fonctionne.
    D'avance merci pour vos judicieux conseils.
    Mon code est le suivant

    La def :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	<svg version="1.1" id="svg1" xmlns="http://www.w3.org/2000/svg" display="inline">
    	<defs>
    		<g id="graphismeAR">
    			<polyline fill="navy" points="121.264,45.031 118.355,45.263 118.361,42.427 "/>
    			<path fill="navy" stroke="navy" stroke-width="1" d="M119.798,43.769c0.668-0.621,1.563-0.999,2.549-1 c2.072,0,3.75,1.68,3.75,3.75c0,2.072-1.678,3.751-3.75,3.751c-1.59,0-2.945-0.986-3.493-2.379"/>
    		</g>
    	</defs>
    	</svg>
    Le js pour l'insertion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function boutonPaletteAR(cible) {
    	var svgns="http://www.w3.org/2000/svg";
     	$("#zonePalette"+cible).append(boutonPaletteContour(cible));
    	var group=document.createElementNS(svgns, "g");
    	group.setAttributeNS(null, 'id', 'conteneurAR'+cible);
    	$("#zonePalette"+cible).append(group);
    	var contenu = document.createElementNS(svgns, "use");	//	<use xlink:href="#shape" x="50" y="50" />
    	contenu.setAttributeNS(null, 'xlink', href='#graphismeAR');
    	contenu.setAttributeNS(null, 'x', 2);
    	contenu.setAttributeNS(null, 'y', 2);
    	$("#conteneurAR"+cible).append(contenu);
    	return;
    }

  2. #2
    Membre chevronné
    Profil pro
    à la bougie alors
    Inscrit en
    Mai 2006
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : à la bougie alors

    Informations forums :
    Inscription : Mai 2006
    Messages : 224
    Par défaut
    Bonjour,

    Je pense que
    contenu.setAttributeNS(null, 'xlink', href='#graphismeAR'); ;
    s'écrit plutôt
    contenu.setAttributeNS(svgns, 'xlink:href','#graphismeAR'); .

    Juste en passant vu que je n'y connais rien

    edit:
    En fait, indépendamment du fait de savoir si ton code est correct ou pas, il te faut :
    - rajouter l'espace de nom 'xlink' au document qui contiendra ta balise 'use' :
    -- si c'est un document svg :
    Code svg : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <svg version="1.1" id="svg1" display="inline"
         xmlns="http://www.w3.org/2000/svg"
         xmlns:xlink="http://www.w3.org/1999/xlink" >
    - à rajouter aussi lors de la création de l'attribut 'xlink:href' :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function boutonPaletteAR(cible) {
    	var svgns="http://www.w3.org/2000/svg";
    	var xlinkns="http://www.w3.org/1999/xlink";
           //...
    	var contenu = document.createElementNS(svgns, "use");	//	<use xlink:href="#shape" x="50" y="50" />
    	contenu.setAttributeNS(xlinkns, 'xlink:href', '#graphismeAR');
         // ...
    }

    edit bis:
    Pas besoin de rajouter 'xlink' au document
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function boutonPaletteAR(cible) {
    	var svgns="http://www.w3.org/2000/svg";
    	var xlinkns="http://www.w3.org/1999/xlink";
           //...
    	var contenu = document.createElementNS(svgns, "use");	//	<use xlink:href="#shape" x="50" y="50" />
    	contenu.setAttributeNS(xlinkns, 'xlink:href', '#graphismeAR');
         // ...
    }
    devrait suffire. Pour mes tests ça fonctionne.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 414
    Par défaut
    Merci pour ta réponse mais elle ne fonctionne pas mais ne génère pas d'erreur
    Cdlt

  4. #4
    Membre chevronné
    Profil pro
    à la bougie alors
    Inscrit en
    Mai 2006
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : à la bougie alors

    Informations forums :
    Inscription : Mai 2006
    Messages : 224
    Par défaut
    Je ne sais pas si on est notifié des "edit", alors à tout hasard :

    L'attribut 'href', utilisé dans la balise 'use' définie dans SVG, est défini dans XLINK. Il faut le créer en relation à son espace de nom pour que ça fonctionne.

    contenu.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', '#graphismeAR');

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 414
    Par défaut
    Citation Envoyé par lysandro Voir le message
    Bonjour,

    Je pense que
    contenu.setAttributeNS(null, 'xlink', href='#graphismeAR'); ;
    s'écrit plutôt
    contenu.setAttributeNS(svgns, 'xlink:href','#graphismeAR'); .

    Juste en passant vu que je n'y connais rien

    edit:
    En fait, indépendamment du fait de savoir si ton code est correct ou pas, il te faut :
    - rajouter l'espace de nom 'xlink' au document qui contiendra ta balise 'use' :
    -- si c'est un document svg :
    Code svg : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <svg version="1.1" id="svg1" display="inline"
         xmlns="http://www.w3.org/2000/svg"
         xmlns:xlink="http://www.w3.org/1999/xlink" >
    - à rajouter aussi lors de la création de l'attribut 'xlink:href' :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function boutonPaletteAR(cible) {
    	var svgns="http://www.w3.org/2000/svg";
    	var xlinkns="http://www.w3.org/1999/xlink";
           //...
    	var contenu = document.createElementNS(svgns, "use");	//	<use xlink:href="#shape" x="50" y="50" />
    	contenu.setAttributeNS(xlinkns, 'xlink:href', '#graphismeAR');
         // ...
    }

    edit bis:
    Pas besoin de rajouter 'xlink' au document
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function boutonPaletteAR(cible) {
    	var svgns="http://www.w3.org/2000/svg";
    	var xlinkns="http://www.w3.org/1999/xlink";
           //...
    	var contenu = document.createElementNS(svgns, "use");	//	<use xlink:href="#shape" x="50" y="50" />
    	contenu.setAttributeNS(xlinkns, 'href', '#graphismeAR');
         // ...
    }
    devrait suffire. Pour mes tests ça fonctionne.
    NICKEL de chez nickel, j'avais oublié la directive xlinkns="http://www.w3.org/1999/xlink".
    Merci encore pour ton assistance

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utilisation de la propriété src de javascript
    Par pas30 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/12/2007, 11h15
  2. [JSP] Utiliser une classe Java dans du Javascript
    Par BiM dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 11/07/2007, 11h52
  3. [WebForms]Comment utiliser une variable de session depuis JavaScript ?
    Par ThunderBib dans le forum Général Dotnet
    Réponses: 5
    Dernier message: 05/05/2006, 14h01
  4. [PHP-JS] utiliser une variable php dans du javascript
    Par kcizth dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/02/2006, 11h53
  5. utiliser un recordset dans un script javascript
    Par insect INC dans le forum ASP
    Réponses: 4
    Dernier message: 10/10/2005, 19h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo