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 :

Script SVG qui ne fonctionne pas avec FF uniquement


Sujet :

JavaScript

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

    Informations forums :
    Inscription : Octobre 2007
    Messages : 414
    Points : 187
    Points
    187
    Par défaut Script SVG qui ne fonctionne pas avec FF uniquement
    Bonsoir à tous,
    En cette fin d'AM je galère avec un script SVG qui fonctionne bien sous IE Chrome et Safari mais pas sous FF.
    Il s'agit d'un cercle de 350° en rotation.
    Si qqu'un peut me donner une piste d'avance merci
    Mon code :
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8" />
        <title></title>
        <style>
          html, body{
            height: 100%;
            margin: 0px;
            padding: 0px
          }
        </style>
     
    <script type="text/ecmascript">
    	function addRotateTransform(target_id, speed, direction) {
    		var loaderConteneur = document.createElement("div");
    		loaderConteneur.id = 'loader');
    		document.body.appendChild(loaderConteneur);
    		var svgns="http://www.w3.org/2000/svg";
    		var svg=document.createElementNS(svgns, "svg");
    		svg.setAttribute('width', '200px');
    		svg.setAttribute('height', '200px');
    		svg.setAttribute('x', '0px');
    		svg.setAttribute('y', '0px');
    		document.getElementById("loader").appendChild(svg);
    		var xlinkns="http://www.w3.org/1999/xlink";
    		var element_to_rotate = document.createElementNS(svgns, "use");
    		element_to_rotate.setAttributeNS(xlinkns, 'xlink:href', '#loaderSimple');
    		element_to_rotate.setAttributeNS(null, 'x', 0);
    		element_to_rotate.setAttributeNS(null, 'y', 0);
    		element_to_rotate.setAttributeNS(null, 'stroke-width', 2);
    		element_to_rotate.setAttributeNS(null, 'stroke', "#006699");
    		element_to_rotate.setAttributeNS(null, 'fill', 'none');
    		svg.appendChild(element_to_rotate)
    		var my_transform = document.createElementNS(svgns, "animateTransform");
    		var bb = element_to_rotate.getBBox();
    		var cx = bb.x + bb.width/2;
    		var cy = bb.y + bb.height/2;
    //		alert(cx+"\n"+cy+"\n"+bb.width);
    		my_transform.setAttributeNS(xlinkns, 'xlink:href', '#loaderSimple');
    		my_transform.setAttributeNS(null, "attributeName", "transform");
    		my_transform.setAttributeNS(null, "attributeType", "XML");
    		my_transform.setAttributeNS(null, "type", "rotate");
    		my_transform.setAttributeNS(null, "dur", speed + "s");	//	en seconde
    		my_transform.setAttributeNS(null, "repeatCount", "indefinite");
    		my_transform.setAttributeNS(null, "from", "0 "+cx+" "+cy);
    		my_transform.setAttributeNS(null, "to", 360*direction+" "+cx+" "+cy);
    //		my_transform.setAttributeNS(null, 'transform',  'scale(.5)');
     
    		element_to_rotate.appendChild(my_transform);
    		my_transform.beginElement();
    	}
    	</script>
    </head>
      <body>
    <div style="display:none; "><svg version="1.1" id="svg1" xmlns="http://www.w3.org/2000/svg" display="inline" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="21px" height="21px" viewBox="88.733 12.014 21 21">
    	<defs>
    	<path id="loaderSimple" stroke-linecap="round" stroke-linejoin="round" d="M74.592,6.486c16.437,8.369,27.695,25.448,27.695,45.157c0,27.971-22.675,50.644-50.644,50.644C23.674,102.287,1,79.614,1,51.644C1,23.674,23.674,1,51.644,1c3.004,0,5.946,0.262,8.807,0.763"/>
        </defs>	
    	</svg></div>
      </body>
    	<script type="text/javascript">addRotateTransform('loaderSimple', 2, 1); </script>
    </html>

  2. #2
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Ton <animateTransform> a une référence inutile sur #loaderSimple. Retire-la et ça marchera

Discussions similaires

  1. CSS qui ne fonctionne pas avec safari uniquement
    Par sophiej1859 dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 26/06/2011, 20h07
  2. [SVG] SVG qui ne fonctionne pas sous IE
    Par bilou972 dans le forum Autres langages pour le Web
    Réponses: 2
    Dernier message: 08/08/2007, 17h27
  3. tutoriel qui ne fonctionne pas avec glassfish
    Par dev7 dans le forum Glassfish et Payara
    Réponses: 1
    Dernier message: 13/04/2007, 17h25
  4. Réponses: 10
    Dernier message: 13/03/2007, 11h38
  5. Script JSP qui ne fonctionne pas sur n'importe quel poste
    Par vannary dans le forum Servlets/JSP
    Réponses: 15
    Dernier message: 18/12/2006, 11h56

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