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 :

Javascript et SVG


Sujet :

JavaScript

  1. #1
    Membre averti
    D�veloppeur informatique
    Inscrit en
    Mars 2009
    Messages
    39
    D�tails du profil
    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 39
    Par d�faut Javascript et SVG
    Salut tout le monde

    J'ai un fichier SVG que je modifie dynamiquement avec javascript en y ajoutant des rectangles,du texte etc.

    Je veux savoir s'il est possible de sauvegarder les modifications apport�es au fichier svg.

    Merci d'avance.

  2. #2
    Membre exp�riment� Avatar de k1rby
    Profil pro
    D�veloppeur Web
    Inscrit en
    Novembre 2008
    Messages
    181
    D�tails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Novembre 2008
    Messages : 181
    Par d�faut
    Je veux pas dire de conneries mais � priori non. Pour des raisons �videntes de s�curit�s, on ne peut pas enregistrer des fichiers en JavaScript (enfin je crois, j'ai un doute d'un coup oO)

  3. #3
    jnore
    Invit�(e)
    Par d�faut
    Bonsoir,

    Sauvegarder tes modif cot� client, cela doit �tre dur dur...

    On peut peut-�tre envisager 2 solutions cot� serveur:

    1) Une fois ton xml/svg modifi�, il faudrait l'enregistrer via ajax sur ton seveur avec un nom unique stock� dans une session. Du coup quand le visiteur revient, tu recuperes le nom du fichier xml et tu le recharges. Le visiteur retrouve ainsi son xml modifi�. --> Le probl�me, il peut � terme y avoir bcp de fichier xml sur ton serveur.

    OU

    2) Il faudrait serializer le dom/svg et le stocker directement dans une session puis le rappeler lors du futur passage du client.

    Cela reste � discuter en fonction de tes besoins.

  4. #4
    Membre averti
    D�veloppeur informatique
    Inscrit en
    Mars 2009
    Messages
    39
    D�tails du profil
    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 39
    Par d�faut
    Merci de vos r�ponses claires et nettes

  5. #5
    Membre averti
    D�veloppeur informatique
    Inscrit en
    Mars 2009
    Messages
    39
    D�tails du profil
    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 39
    Par d�faut Re
    Bonjour,
    Comment je vais l'enregister via ajax?

    Merci d'avance

  6. #6
    jnore
    Invit�(e)
    Par d�faut
    Citation Envoy� par gatlin Voir le message
    Bonjour,
    Comment je vais l'enregister via ajax?

    Merci d'avance
    1) Il va te falloir le serializer, cad, faire que la structure du DOM soit converti en chaine de caract�re.

    2) l'envoyer (si possible en post) sur une page PHP qui va recup�rer ta chaine de caract�re et la traduire en XML

    3) Une fois la chaine traduite en xml --> faire un save du xml.

    Ceci est un r�sum�. Tu rencontreras certainement des prob tout au long de ce parcours.

    Premi�re chose, manipuler ajax;

    Si tu ne veux pas manipuler ajax, il y a toujours moyen apr�s l'�tape 1 de remplir un input de ta chaine xml puis de transmettre via un formulaire vers ta page php.

    C'est possible mais moins gracieux.

    Bon courage

  7. #7
    Membre averti
    D�veloppeur informatique
    Inscrit en
    Mars 2009
    Messages
    39
    D�tails du profil
    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 39
    Par d�faut RE
    Comment je vais serialiser ce doucment en javascript car les modifications ne sont pas visibles dans la JSP?
    Car c'est un document incorpor� dans la page html avec la balise

    source:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    <embed id="sv" src="pagesweb/svg/parameter.svg" width=5000 height=5000 />
    ensuite je recupere le document
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    var S=document.getElementById("sv");
     SD=S.getSVGDocument();
    Merci d'avance

  8. #8
    jnore
    Invit�(e)
    Par d�faut
    Citation Envoy� par gatlin Voir le message

    ensuite je recupere le document
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    var S=document.getElementById("sv");
     SD=S.getSVGDocument();
    Merci d'avance
    Bonsoir,

    Le probl�me, (j'essaie de reproduire chez moi), c'est que je n'arrive pas � r�cup�rer le contenu du document, en tout cas sur FF.
    L'objectif c'est de r�cup�rer ta premi�re balise SVG puis de serializer de la fa�on suivante.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    var noeud= //ICI RECUPERER LE 1ER NOEUD DU SVG
    var x	=new XMLSerializer();//ON CREE UN NOUVEL OBJECT
    var txt	=x.serializeToString(noeud);//ON TRANSFORME EN CHAINE
    alert(txt);//Juste pour vérifier le contenu.
    C'est la d�marche, � toi de voir pour r�cup�rer le 1er noeud de ton document svg.

  9. #9
    R�dacteur

    Avatar de danielhagnoul
    Homme Profil pro
    �tudiant perp�tuel
    Inscrit en
    F�vrier 2009
    Messages
    6 389
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activit� : �tudiant perp�tuel
    Secteur : Enseignement

    Informations forums :
    Inscription : F�vrier 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par d�faut
    Bonsoir.

    Je ne connais pas le probl�me, mais une petite recherche avec Google m'a amen� � http://stackoverflow.com/questions/2...the-client-dom, en esp�rant que cela vous sera utile :

    var svg = document.getElementById('svg_root'); // or whatever you call it
    var serializer = new XMLSerializer();
    var str = serializer.serializeToString(svg);

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues � un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  10. #10
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    D�tails du profil
    Informations personnelles :
    �ge : 57

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par d�faut
    SAlut,

    Citation Envoy� par gatlin Voir le message
    Comment je vais serialiser ce doucment en javascript car les modifications ne sont pas visibles dans la JSP?
    Car c'est un document incorpor� dans la page html avec la balise

    source:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    <embed id="sv" src="pagesweb/svg/parameter.svg" width=5000 height=5000 />
    ensuite je recupere le document
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    var S=document.getElementById("sv");
     SD=S.getSVGDocument();
    Merci d'avance
    Attention car XMLSerializer est un objet propre � Firefox et Opera.

    Pour IE, �tant donn� qu'il y a besoin du plugin d'Adoble, la fonction printNode(rootSVG) fait l'affaire.

    Et sinon, ce code doit aussi pouvoir s'appliquer (car cela reste un "simple" document XML):

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
     
    //à appeler ainsi: serialize(sv);
     
    function serialize(R){
      var s="<"+R.nodeName+listAttributes(R)+">";
      for (i=0;i<R.childNodes.length;i++){
    	if (R.childNodes.item(i).nodeName!="#text"){
     		var node=R.childNodes.item(i)
    		var nn=node.nodeName
     		s+="<"+nn
    		s+=listAttributes(node)
    		if (insiders[nn]){
    			if (nn=="script")s+="><![CDATA["+node.childNodes.item(0).nodeValue+"]]>"
    			else s+=">"+node.childNodes.item(0).nodeValue
    			s+="</"+nn+">\n"
    		}
    		else s+="/>\n"
    	}
      }
      s+="</"+R.nodeName+">";
      return s;
    }
    function listAttributes(n){
    	var s=""
    	for (j=0;j<n.attributes.length;j++){
    		s+=" "+n.attributes.item(j).nodeName+"=\""
    		s+=n.attributes.item(j).nodeValue+"\""
    	}
    	return s
    }
    Bons tests,

    ERE

  11. #11
    Membre averti
    D�veloppeur informatique
    Inscrit en
    Mars 2009
    Messages
    39
    D�tails du profil
    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 39
    Par d�faut Re
    Merci pour vos r�ponses, vous me sauvez la peau

  12. #12
    Membre averti
    D�veloppeur informatique
    Inscrit en
    Mars 2009
    Messages
    39
    D�tails du profil
    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 39
    Par d�faut RE
    C'est quoi insiders dans la fonction,tu l'as d�finie comme fonction ou c'est une m�thode de javascript?

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    if (insiders[nn]){
    			if (nn=="script")s+="><![CDATA["+node.childNodes.item(0).nodeValue+"]]>"
    			else s+=">"+node.childNodes.item(0).nodeValue
    			s+="</"+nn+">\n"
    		}
    Merci d'avance

  13. #13
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    D�tails du profil
    Informations personnelles :
    �ge : 57

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par d�faut
    Excuse:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    var insiders = {text: true, script: true}
    Int�ressant: plus d'infos ici si besoin.

    ERE

  14. #14
    Membre averti
    D�veloppeur informatique
    Inscrit en
    Mars 2009
    Messages
    39
    D�tails du profil
    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 39
    Par d�faut RE
    Merci encore

  15. #15
    Membre chevronn� Avatar de Mobius
    Profil pro
    none
    Inscrit en
    Avril 2005
    Messages
    463
    D�tails du profil
    Informations personnelles :
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : none

    Informations forums :
    Inscription : Avril 2005
    Messages : 463
    Par d�faut
    Autre info compl�mentaire : Enregistrer un fichier sur le poste client en javascript : C'EST POSSIBLE !!!

    Et oui, aussi surprenant que cela puisse paraitre, on peut le faire.
    Je ne vais pas d�tailler comment mais je vous invite � essayer de comprendre le fonctionnement de tiddlywiki ( http://www.tiddlywiki.com/ et http://tiddlywiki.org/ )
    Le principe de ce wiki, c'est que tout est contenue dans un unique fichier, lorsque le fichier est ouvert localement (avec une url de type file://... ) il est possible d'enregistrer les modifications sur le disque (apr�s bien sur avoir demand� l'autorisation).
    Si l'autorisation est permanante, cela provoque un trou de s�curit� relativement important.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Adaptation javascript pour SVG
    Par japower01 dans le forum G�n�ral JavaScript
    R�ponses: 17
    Dernier message: 15/12/2013, 20h12
  2. R�cup�rer valeur javascript et svg
    Par magnum6669 dans le forum G�n�ral JavaScript
    R�ponses: 2
    Dernier message: 18/01/2013, 12h53
  3. IE9, javascript, et SVG
    Par alexxxx69 dans le forum G�n�ral JavaScript
    R�ponses: 1
    Dernier message: 08/03/2012, 17h27
  4. Javascript et SVG
    Par kululu dans le forum G�n�ral JavaScript
    R�ponses: 1
    Dernier message: 17/05/2010, 01h32
  5. [ Javascript / SVG ] Com fen�tre fille - fen�tre m�re
    Par m@t dans le forum G�n�ral JavaScript
    R�ponses: 28
    Dernier message: 08/02/2006, 11h31

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