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 :

[OpenLayers - ASP.NET / C#] ordre d'exécution de scripts


Sujet :

JavaScript

  1. #1
    Membre expérimenté Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Points : 1 337
    Points
    1 337
    Par défaut [OpenLayers - ASP.NET / C#] ordre d'exécution de scripts
    Bonjour,

    J'utilise OpenLayers pour produire des cartes et y ajouter des couches (layers). Je développe en ASP.NET et c# à l'aide de MS Web Developper 2008.

    Dans le head de ma page aspx, j'ai intégré un script dans lequel j'ai mis la fonction d'initialisation (init()), et quelques fonctions pour ajouter des "markers" (ce sont des couches sur lesquelles j'ajoute des icones...).


    Prenons un exemple :

    Sur la page aspx, j'ai trois fonctions javascript : init() (celle de OpenLayers) qui est chargée lors du chargement du body. Les deux autres fonctions sont appelées à partir du code behind.
    Ce que je voudrais faire, c'est exécuter init() avant ces deux fonctions. Le problème est qu'elles s'exécutent après...
    Sauriez-vous comment faire ?

    Page ASPX :
    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
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>Page sans titre</title>
        <script type="text/javascript">
            var variable1, variable2;
     
     
            function init()
            {
                var string = "voila un autre test du body";
                alert (string);
            }
     
            function test()
            {
                var i = "voila le test";
                alert(i);
            }
     
            function ecrire(vari1, vari2)
            {
                variable1 = vari1;
                variable2 = vari2;            
                alert(variable1 + variable2);
            }
     
        </script>
    </head>
    <body onload="init()">
        <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <div>
            <script type="text/javascript">test();</script>
        </div>
        </form>
    </body>
    </html>
    Page CS :
    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
    using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
     
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string a = "première variable behind";
            string b = "deuxième variable behind";
            string script = "<script type=\"text/javascript\">ecrire('" + a + "'" + "," + "'" + b + "');</script>";
            Page.ClientScript.RegisterClientScriptBlock(this.Page.GetType(), "scriptTest", script);
     
        }
    }
    Je pense que c'est le "RegisterClientScriptBlock" qu'il faut changer. J'ai essayé toutes les méthodes du script manager (Page.ClientScript) mais init() est toujours exécuté en dernier...

    Merci beaucoup.
    Faites une recherche sur le forum et/ou sur internet et lisez la doc officielle avant de poser une question svp.
    et n'oubliez pas de lire les FAQ !
    FAQ Java et les cours et tutoriels Java
    Doc JAVA officielle
    AngularJS 1.x
    Angular 2

    Do it simple... and RTFM !

  2. #2
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    Ce que je voudrais faire, c'est exécuter init() avant ces deux fonctions. Le problème est qu'elles s'exécutent après...
    Sauriez-vous comment faire ?
    normal , test() fait partit de la page , ainsi que ton autre scritp , onload , s'exécute une fois toute la page chargée
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  3. #3
    Membre expérimenté Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Points : 1 337
    Points
    1 337
    Par défaut
    Merci pour ta réponse...

    Là est le problème... avec OpenLayers, si je mets pas la fonction init() dans le body, elle n'est pas exécutée.
    mon problème est que je voudrais charger la carte (exécution de init()), et en fonction de plusieurs événements, la modifier. La modification est effectuée à l'aide de scripts javascript que j'écris dans le code behind de ma page (fichier.aspx.cs). Je peux pas faire appel à init() a chaque fois que je recherge la page (Dans ce cas, le body est rechargé, et je perds mes événements)

    Auriez-vous une solution, svp ?

    Merci
    Faites une recherche sur le forum et/ou sur internet et lisez la doc officielle avant de poser une question svp.
    et n'oubliez pas de lire les FAQ !
    FAQ Java et les cours et tutoriels Java
    Doc JAVA officielle
    AngularJS 1.x
    Angular 2

    Do it simple... and RTFM !

  4. #4
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    lance les autres fonction à l'intérieur de init!

  5. #5
    Membre expérimenté Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Points : 1 337
    Points
    1 337
    Par défaut
    je peux pas !
    je dois afficher en premier la carte, et en fonction des actions de l'utilisateur, ou d'événements extérieurs, j'y ajoute des icônes, images etc. (layers).

    mais pour tester, j'ai mis les scripts d'ajout d'icones... au chargement de la page. Mais ces scripts sont appelés avant init(). C'est clair qu'avec ta solution, ca marche... mais ce n'est pas ce que je veux.

    Merci
    Faites une recherche sur le forum et/ou sur internet et lisez la doc officielle avant de poser une question svp.
    et n'oubliez pas de lire les FAQ !
    FAQ Java et les cours et tutoriels Java
    Doc JAVA officielle
    AngularJS 1.x
    Angular 2

    Do it simple... and RTFM !

  6. #6
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    humm en gros , tu dois avoir ton ini() avant tout le reste , puis , tes méthodes ??

    dans ce cas la sur ton onload = prepare()

    et dans prepare(){
    init();
    les autre() ..
    }

    non ??
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  7. #7
    Membre expérimenté Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Points : 1 337
    Points
    1 337
    Par défaut
    non...

    ça fait rien ça... je peux appeler une fonction prepare1() qui appelle la fonction prepare2() et qui appelle init(), init() sera toujours appelé en dernier parce qu'il est dans l'événement onload du body.

    et les autres fonctions je les crée dynamiquement à partir de mon code behind. Je peux pas les mettre dans la fonction prepare().

    De plus, les autres fonctions doivent être exécutées en réponse à des événements. Quand je les exécute, ma carte disparait parque le init() n'est pas rappelé et la page se recharge. alors ce que j'ai fais, c'est rajouter ces fonctions (add_Events()) au chargement de la page (en behind : PageLoad()).Du coup, elles sont exécutées avant le init()...


    Que des problèmes... Visiblement Javascript et ASP.NET / c# ne sont pas trop compatibles.
    Faites une recherche sur le forum et/ou sur internet et lisez la doc officielle avant de poser une question svp.
    et n'oubliez pas de lire les FAQ !
    FAQ Java et les cours et tutoriels Java
    Doc JAVA officielle
    AngularJS 1.x
    Angular 2

    Do it simple... and RTFM !

  8. #8
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    peux tu nous faire une liste exacte du déroulement actuel , et le déroulement que tu souhaiterais car la je m'y perd un peu ^^
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  9. #9
    Membre expérimenté Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Points : 1 337
    Points
    1 337
    Par défaut
    Ok.

    Voila mon code :
    Dans le fichier javascript, j'ai une fonction init qui initialise la carte et une fonction add_event qui ajoute un événement. Le layer qui contient les événements, je l'ajoute dynamiquement dans le code behind.
    Script map.js :
    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
     
    var map;
    var events_markers;
    var lon = 1.4454175;
    var lat = 43.6019175;
    var zoom = 11;
    var initLonLat;
    var layerTilesAtHome;
    OpenLayers.IMAGE_RELOAD_ATTEMPTS = 5;
     
    function lonLatToMercator(ll) {
        var lon = ll.lon * 20037508.34 / 180;
        var lat = Math.log (Math.tan ((90 + ll.lat) * Math.PI / 360)) / (Math.PI / 180);
        lat = lat * 20037508.34 / 180;
        return new OpenLayers.LonLat(lon, lat);
    }
     
    function init() 
    {
    //marker.events.register('mousedown', marker, function(evt) { alert(this.icon.url); OpenLayers.Event.stop(evt); });
        initLonLat = lonLatToMercator(new OpenLayers.LonLat(lon, lat));
     
        map = new OpenLayers.Map ("map", {
            controls:[
                new OpenLayers.Control.Navigation(),
                new OpenLayers.Control.PanZoomBar(),
                new OpenLayers.Control.Attribution()],
            maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),
                  maxResolution:156543.0399, units:'meters', projection: "EPSG:900913"} );
        layerTilesAtHome = new OpenLayers.Layer.OSM.Osmarender("Osmarender");
        map.addLayer(layerTilesAtHome);
        map.setCenter (initLonLat, zoom);
          map.addControl(new OpenLayers.Control.MousePosition({element: $('location')}));
          map.addControl(new OpenLayers.Control.LayerSwitcher());
        fcds = new OpenLayers.Layer.GeoRSS( 
        'fcds', 'http://www.adresse.fr/geoserver/wms/reflect?layers=fcds&format=rss', 
        {visibility: false});  
     
        map.addLayer(fcds); 
     
    }
    function add_Event(evId, evLongitude, evLatitude) 
    {            
        //récupération du lonlat de l'événement
        var lonLatMarker = lonLatToMercator(new OpenLayers.LonLat(evLongitude, evLatitude));             
        var icon_event = new OpenLayers.Icon('./images/icones/AK31.gif',new OpenLayers.Size(20,30));
        var event_marker = new OpenLayers.Marker(lonLatMarker,icon_event);
        events_markers.addMarker(event_marker);
     
        //events_markers.drawMarker(event_marker);
     
     
        //refresh(events_markers);            
    }
    Fichier Accueil.aspx :

    <HEAD> :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <script type="text/javascript" src="OpenLayers-2.5/OpenLayers.js"></script>
     
        <script type="text/javascript" src="OpenLayers-2.5/lib/OpenLayers/Layer/OpenStreetMap.js"></script>
     
        <script src="jsScripts/map.js" type="text/javascript"></script>
    <BODY> :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <body onload="init()">
    blablabla
    <div id="map"></div>
    blablablabla
    </body>
    Fichier Acceuil.aspx.cs (code behind) :

    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
    protected void Page_Load(object sender, EventArgs e)
        {
            lblTime.Visible = true;
            lblTime.Text = DateTime.Now.ToLongTimeString();
            if (!Page.IsPostBack)
            {
                add_Events();
            }
            else
            {
                add_Events();
            }
        }
     
    protected void add_Events()
        {
            //consommation du web service retournant la liste des événements
            webService.webServiceClass proxy = new webService.webServiceClass();
    //récupération d'un tableau de structure (événements)
            webService.tableauEvents[] listEvents = proxy.getEvents();
            int nbEvents = listEvents.Count();
     
            string prepareMarkersLayer = "<script type=\"text/javascript\">events_markers = new OpenLayers.Layer.Markers(\"Events Markers\",{srs: 'EPSG:900913',transparent:true,format:'image/gif'},{singleTile: true} );</script>";
            Page.ClientScript.RegisterClientScriptBlock(this.Page.GetType(), "prepareMarkersLayer", prepareMarkersLayer);
            Response.Write("<script type=\"text/javascript\">alert('events_markers.prepared! (behind)')</script>");
     
            for (int i = 0; i < nbEvents; i++)
            {
                string script = "<script type=\"text/javascript\">add_Event('" +
                    listEvents[i].EventId.ToString() + "'" + "," + "'" +
                    listEvents[i].Longitude.ToString() + "'" + "," + "'" +
                    listEvents[i].Latitude.ToString() + "'" + ")</script>";
                Page.ClientScript.RegisterClientScriptBlock(this.Page.GetType(), "add_Event", script);
            }
            string addMarkersLayer = "<script type=\"text/javascript\">map.addLayer(events_markers);</script>";
            Page.ClientScript.RegisterClientScriptBlock(this.Page.GetType(), "addMarkersLayer", addMarkersLayer);
            Response.Write("<script type=\"text/javascript\">alert('events_markers.added! (behind)');</script>");
     
            string setCenter = "<script type=\"text/javascript\">map.setCenter(middle, 10);</script>";
            Page.ClientScript.RegisterClientScriptBlock(this.Page.GetType(), "setCenter", setCenter);
            Response.Write("<script type=\"text/javascript\">alert('map.centered! (behind)');</script>");
     
    }
    Remarque : le code d'initialisation et d'affichage de la carte s'exécute normalement. Par contre, l'ajout des événements ne s'effectue pas parce que les scripts sont exécutés avant la fonction init()... et si j'exécute toutes les instructions (init de la carte + ajout d'icones events), ca marche sans probleme, mais c'est le dynamisme qui m'intéresse...
    Par ailleurs, la consommation du web service se déroule comme je veux. J'ai vérifié en mode débogage.

    Merci beaucoup...
    Faites une recherche sur le forum et/ou sur internet et lisez la doc officielle avant de poser une question svp.
    et n'oubliez pas de lire les FAQ !
    FAQ Java et les cours et tutoriels Java
    Doc JAVA officielle
    AngularJS 1.x
    Angular 2

    Do it simple... and RTFM !

  10. #10
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    truc con mais pourquoi en met pas tes scripts d'event a l'intérieur de ta fonction init ?

    sinon , met un timer , et vérifit que ton objet existe avant de lancer tes event
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  11. #11
    Membre expérimenté Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Points : 1 337
    Points
    1 337
    Par défaut
    Je la voyais venir cette question

    Mais je suis en phase de test. Après, les instructions d'ajout des events répondrons aux événements onclick etc. de plusieurs contrôles. J'ai déjà fait ça, mais ca me "reloadait" la page et je perdais la carte. Lors du reload, l'appel à l'événement onload du body n'est pas effectué. même si je fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script type="text/javascript">init();</script>
    Faites une recherche sur le forum et/ou sur internet et lisez la doc officielle avant de poser une question svp.
    et n'oubliez pas de lire les FAQ !
    FAQ Java et les cours et tutoriels Java
    Doc JAVA officielle
    AngularJS 1.x
    Angular 2

    Do it simple... and RTFM !

  12. #12
    Membre expérimenté Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Points : 1 337
    Points
    1 337
    Par défaut
    Citation Envoyé par slim Voir le message
    J'ai déjà fait ça, mais ca me "reloadait" la page et je perdais la carte. Lors du reload, l'appel à l'événement onload du body n'est pas effectué. même si je fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script type="text/javascript">init();</script>
    Petite rectification, quand je mets un bouton qui fait appel à la fonction add_Events() (code behind c#) en supprimant cet appel de PageLoad du code behind en c#, ca reload la page et ca fait appel à init() du body : 1- exécution des instructions javascript d'ajout des événements
    2 - <body onload="init()">...
    =>C'est toujours le problème d'ordre d'exécution...

    Voici les scripts générés dans le HTML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script type="text/javascript">events_markers.destroy();</script><script type="text/javascript">events_markers = new OpenLayers.Layer.Markers("Events Markers",{srs: 'EPSG:900913',transparent:true,format:'image/gif'},{singleTile: true} );</script><script type="text/javascript">add_Event('TIGRE7_5_65_2940','2,010318','43,57304')</script><script type="text/javascript">map.addLayer(events_markers);setTimeout("map.addLayer(events_markers)",3000);</script><script type="text/javascript">map.setCenter(middle, 10);</script><script type="text/javascript">refreshAll();</script>
    Merci!!
    Faites une recherche sur le forum et/ou sur internet et lisez la doc officielle avant de poser une question svp.
    et n'oubliez pas de lire les FAQ !
    FAQ Java et les cours et tutoriels Java
    Doc JAVA officielle
    AngularJS 1.x
    Angular 2

    Do it simple... and RTFM !

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/04/2014, 18h03
  2. Ordre d'exécution du script
    Par derouteu dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/06/2010, 18h28
  3. Site ASP.NET et Exécution de fichier (.bat)
    Par dahu17 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 24/04/2007, 16h56
  4. [Asp.Net] exécuter fonction javascript
    Par ager1912 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 20/03/2007, 19h22
  5. Réponses: 2
    Dernier message: 13/12/2006, 14h48

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