Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Actualités

  • Blog de Cyril DURAND, passionné de JavaScript, Ajax, ASP.net et tout ce qui touche au developpement Web Client-Side.

    View Cyril Durand's profile on LinkedIn

    hit counters

Atlas et SVG : comment les faire cohabiter
La semaine derniere, j'expliquais que l'on ne pouvais pas utiliser SVG, XHTML et Atlas ensemble à cause d'un bug dans ATLAS !!! Le problème était que pour afficher un graphique SVG dans une page HTML il faut envoyer le document en tant qu'application/xml mais Atlas ne fonctionne plus dans ce cas ... Ayant besoin que cela fonctionne j'ai réfléchit au problème et trouvé une solution : il faut passer par une iframe. Cette solution résoud aussi un autre petit problème : en envoyant mon document en tant que application/xml pour Firefox il est nécessaire que le document soit conforme XHTML. J'utilise SVG pour créer un contrôle il aurait fallut que tous les developpeurs utilisant mon contrôle soient respectueux des standards et c'est malheureusement TRES loin d'être le cas.
 
Voyons alors plus en détails comment j'ai procéder. Puisque je fais un composant qui va générer du VML pour IE et du SVG pour les autres il est hors de question d'écrire quoi que ce soit en dur dans la page, tout ce que j'ai en c'est un div :

<div id="container">
</div>

Dans mon code JavaScript je rajoute dynamiquement une iframe pointant vers un document SVG

window.onload = function(){
     var container = document.getElementById('container'); 
     var iframe = document.createElement('iframe'); 
     iframe.src =
'SVG.aspx';
     iframe.frameBorder = 0;
     container.appendChild(iframe);
}

La page SVG.aspx est un trés simple document SVG (envoyé en tant que application/xml) voici le code complet :

<%@ Page Language="C#" %><?xml version="1.0" encoding="UTF-8" standalone="no"?>
<
script runat="server">
    protected void Page_Load(Object sender, EventArgs e)
    {
        Response.ContentType =
"application/xml";
    }
</script>
<
svg version="1.1" xmlns="http://www.w3.org/2000/svg" >
    <style type="text/css">
        .begin {stop-color:#F0F;}
        .end {stop-color:#F00;}
    </style> 
    <linearGradient id="gradient">
        <stop class="begin" offset="0%"/>
        <stop class="end" offset="100%"/>
    </linearGradient>
    <polygon fill="url(#gradient)" id="polygon" points="10,10 10,90 90,10" />
</
svg>

J'ai donc réussit à afficher un graphique SVG dans une page Atlas :-) Il me reste maintenant a manipuler ce graphique via mon code JavaScript. Pour cela il faut s'abonner à l'evenement load de l'iframe puis on a accés à l'element que l'on souhaite :
 
window.onload = function(){

     var container = document.getElementById('container'); 
     var iframe = document.createElement('iframe');
     iframe.src =
'SVG.aspx';
     iframe.frameBorder = 0;

     container.appendChild(iframe);

     iframe.onload =
function(){
         
var polygon = this.contentDocument.getElementById('polygon');
          var point = polygon.ownerSVGElement.createSVGPoint();
          point.x = 90;
          point.y = 90;
          polygon.animatedPoints.appendItem(point);
     }

}
 
Je peux désormais continuer à m'amuser avec SVG/VML et Atlas :-)
 
Si vous voulez en savoir plus sur la manipulation du DOM SVG je vous conseille cette doc en français : La corrélation du langage ECMAScript avec SVG
Posted: dimanche 20 août 2006 19:21 par cyril
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- La suite ...Proposition de collaboration rédactionnelle entre les communautés de développeurs et Microsoft France par LucasR le il y a 11 heures et 47 minutes

- [Fun] Votre simulateur de vol avec Microsoft ESP par Julien Chable le il y a 17 heures et 30 minutes

- [Best Practices] Customisation du My Site : Comment le modifier en amont et en aval par The Mit's Blog le il y a 18 heures et 44 minutes

- Patrick Tisseghem s'en est allé ... par The Mit's Blog le il y a 19 heures et 28 minutes

- MS AutoCollage par alex# le il y a 20 heures et 14 minutes

- Un grand SharePointeur nous a quitte : Patrick Tisseghem manquera à la communauté ! par RedoBlog - The .NET Gentleman !!! le il y a 20 heures et 40 minutes

- [WPF] Comment charger dynamiquement un fichier XAML qui définit des eventhandler ? par Thomas Lebrun le 09-04-2008, 10:56

- Article sur le filtrage des modèles de site SharePoint par The Grib's Lair [Sébastien PICAMELOT - MVP SharePoint] le 09-04-2008, 00:11

- Adopter votre Redo en 3D - Clone Virtuel - avec photosynth par RedoBlog - The .NET Gentleman !!! le 09-04-2008, 00:07

- [Expression Web] Astuce de la Semaine : Mettre en bouton ses macros dans une barre d'outils. par Expression Web & Me le 09-03-2008, 20:48