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

Contribuez Discussion :

[Ancien]La FAQ Javascript


Sujet :

Contribuez

  1. #41
    Rédacteur

    Avatar de arnolem
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 856
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 856
    Points : 6 114
    Points
    6 114
    Par défaut
    je propose une mise à jour pour cette question
    http://javascript.developpez.com/faq...input.chiffres

    En effet, la version actuelle ne permet pas de se déplacer dans le champs de saisie, ni de mettre un + pour l'international, ni de supprimer ou de coller une info.

    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
    	// Compatibilité IE / Firefox
    	if(!event&&window.event) {
    		event=window.event;
    	}
    	// IE
    	if((event.keyCode < 48 || event.keyCode > 57) && event.keyCode > 31 && event.keyCode != 43 && event.keyCode != 40 && event.keyCode != 41 && event.keyCode != 32 && event.keyCode != 118 && event.keyCode != 86) {
     
    		event.returnValue = false;
    		event.cancelBubble = true;
    	}
    	// DOM
    	if((event.which < 48 || event.which > 57) && event.which > 31 && event.which != 43 && event.which != 40 && event.which != 41 && event.which != 32 && event.which != 118 && event.which != 86) {
    		event.preventDefault();
    		event.stopPropagation();
    	}
    A vous de voir
      0  0

  2. #42
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 649
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 649
    Points : 11 138
    Points
    11 138
    Par défaut
    Comment séparer les parties entière et décimale d'un nombre ?
    Deux méthodes :

    - valeur doit être un nombre.
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function EntDec(valeur)
    {
     var partEnt, partDec;
     var precision = 1000;
     
     partEnt = parseInt(valeur);
     partDec = Math.round(precision*(valeur-partEnt));
     
     alert(partEnt+" "+partDec);
    }

    -valeur peut être un nombre ou une chaine de caractères (cas des input)
    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
     
    function StrEntDec(valeur)
    {
     var partEnt, partDec="00", posPt, strVal;
     
     strVal = valeur.toString();
     posPt = strVal.indexOf(".");
     
     if (posPt>0)
     {
        partDec = strVal.substring(posPt+1, strVal.length);
        partEnt = strVal.substring(0, posPt);
     }
     else
        partEnt = strVal.substring(0, strVal.length);
     
     alert(partEnt+" "+partDec);
    }

    A la discussion Pour récupérer les décimales d'un nombre

    Spacefrog propose également une solution en utilisant la méthode split

    Deux exemples qui peuvent t'amener à une solution ...

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    <script type='text/javascript'> 
    var Nombre=37.6;
     alert(Nombre-parseInt(Nombre));   
    alert (Nombre.toString().split('\.')[1])  
     </script>

    avec la première tu rencontreras des soucis de virgule flottante ...
    Avec la seconde faudra juste faire le test sur la longueur du tableau si il n'y a pas de décimales ... et refaire un Number du résultat ...
    en l'adaptant un peu pour afficher la partie entière :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <script type='text/javascript'>
    var Nombre=37.6 
    var ent = Nombre.toString().split('\.')[0];
    var dec = Nombre.toString().split('\.')[1];
    alert(ent+" "+dec);
    </script>
      0  0

  3. #43
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Pour la question suivante : Comment débugger un script javascript ?
    Je propose l'ajout du paragraphe suivant.

    Si vous souhaiter allez plus loin et poser des points d'arrêts, modifier le code ou les valeurs de variables durant l'exécution, obtenir les contextes ou les piles d'appels, vous devez utiliser les programme (gratuits) suivants :

    Pour Internet Explorer :
    Microsoft Visual Web Developper Express Edition 2005 et activer l'option de débogage externet ET interne dans les options internet d'IE

    Pour FireFox :
    Installer le add-In FireBug (en Anglais)

    Pour les autres (tous navigateurs confondus, mais à poser dans le script lui-même : )
    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
    /* Methode 1 : Analyser un objet en profondeur... Parfois lent ... Peu pratique mais parfois très utile */
    function debug(obj, name, prof) {
        var msg = name + obj;
     prof = (prof == null) ? true : prof;
     if (prof && (typeof (obj) == "array" || typeof (obj) == "object")){
        try {
            for (key in obj)
            {
                msg = msg + debug(obj[key], name + "[" + key + "]", false);
            }
        } catch (ex) {}}
        return msg;
    }
     
    /* Méthode 2 : Evaluation de scripts. Très maniable et très pratique */
    // Penser à "0; var xyz = obj.xyz(); x.init()" pour exécuter une fonction et 
    // en conserver la valeur en mémoire puis y ajouter autant de chose que voulu...
    if (confirm("Lancer le débogage ?")) {
     var _V_DEBUG = null;
     var evalstr = "'Débogage Activé !'";
     while ((evalstr != "|END|") && (evalstr == "" ? (!confirm("Terminer le débogage ?")) : true)) 
     {
      try
      {
       eval("_V_DEBUG=" + evalstr);
      }
      catch (ex)
      {
       _V_DEBUG = "Impossible d'évaluer l'expression (" + evalstr + ") : " + ex.description;
      }
      var pnum = 0;
      try {for (key in _V_DEBUG) {pnum++}} catch(ex) {pnum = "Erreur : " + ex.description + " : -1"}
      alert("EVAL : " + _V_DEBUG + "\n\n" + pnum + " sous objet(s)")
      evalstr = prompt("Valeur à analyser : (|END| pour stopper)",evalstr)
     }
    }
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey
      0  0

  4. #44
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Un code qui a déjà servi pas mal de fois :
    Envoyer un formulaire grâce à AJAX :
    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
    function getDataFromForm(Form) {
        var data="";
        var key=0;
        for (key=0;key<Form.elements.length;key++) {      
             var currentValue=(Form.elements[key].tagName.toLowerCase()=="select")?getSelectValue(Form.elements[key]):Form.elements[key].value
             data+=escape(Form.elements[key].name)+"="+escape()+"&";
        }
        return data.substr(0, data.length-1);
    }
     
    function getSelectValue(select) {
       var value="";
       for (var i=0; true; i++) {
          if (select.option[i]) {
             if (select.options[i].selected) {
                value += select.options[i].value + "||";
             }
          } else {return value.substr(0, value.length-2); }
       }
    }
    Ne marche pas pour les input de type FILE.

    Dans le cas des selects multiples (lorsqu'on peut sélectionnez plusieurs valeurs), il faut splitter la chaine renvoyée au moyen de "||" pour obtenir le tableau des valeurs selectionnées
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey
      0  0

  5. #45
    Rédacteur

    Avatar de arnolem
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 856
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 856
    Points : 6 114
    Points
    6 114
    Par défaut
    Vous avez peut etre déja eu le problème d'un getElementsByName avec IE, moi oui et sur plusieurs projet.
    j'ai fait cette petite fonction qui peut surement etre améliorée :
    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
    function getIeElementsByName(elementsName){
    	if(navigator.appName.indexOf("Explorer")>0){
    		var i, l;
    		tab = document.all;
    		l = tab.length;
    		ElementsByName = new Array();
     
    	   for (i=0; i<l; i++)
    	   {
    		  if (tab[i].name==elementsName)
    		  ElementsByName[ElementsByName.length] = tab[i];
    	   }
    	   return ElementsByName;
    	}else{
    		return document.getElementsByName(elementsName);
    	}
    }
      0  0

  6. #46
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    En effet, IE ne prend l'attribut NAME que pour les input, img, iframe, ...
    C'est une bonne idée de le rapeler
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey
      0  0

  7. #47
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Fermer une fenêtre sans confirmation sous IE (et un popup sous FF) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.open('','_self').close();
    Acceder à des objets dans une frame :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var Frame = document.getElementById("frame");
    var FrameWindow = Frame.window?Frame.window:Frame.contentWindow;
    var FrameDocument = FrameWindow.document;
    var obj = FrameDocument.getElementById("object");
    Interrompre un script un certain nombre de temps (ne pas dépasser 5-10 secondes) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    sleep=function(ms) {
       var continue=true;
       setTimeout(function() { continue=false; }, ms);
       while (continue) {}
    }
     
    // Utilisation :
    sleep(1000);
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey
      0  0

  8. #48
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par FremyCompany
    Fermer une fenêtre sans confirmation sous IE (et un popup sous FF) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.open('','_self').close();
    Là, j'avoue ne pas comprendre ce code. Pourquoi ouvrir une fenetre sur soi même alors qu'un window.opener = self; suffit? Cette deuxième solution parait plus claire, non?

    C'st déjà là, non?
    http://javascript.developpez.com/faq...#fermerFenetre

    (bon, on pourrait lui rajouter une réponse spécifique)

    Citation Envoyé par FremyCompany
    Acceder à des objets dans une frame :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var Frame = document.getElementById("frame");
    var FrameWindow = Frame.window?Frame.window:Frame.contentWindow;
    var FrameDocument = FrameWindow.document;
    var obj = FrameDocument.getElementById("object");
    Faudrait tester. Ca apporte quoi par rapport à passer par le nom de la frame dans le vecteur frames?
    http://javascript.developpez.com/faq...e#frame.reload

    Citation Envoyé par FremyCompany
    Interrompre un script un certain nombre de temps (ne pas dépasser 5-10 secondes) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    sleep=function(ms) {
       var continue=true;
       setTimeout(function() { continue=false; }, ms);
       while (continue) {}
    }
     
    // Utilisation :
    sleep(1000);
    Euh, ça interromps pas le script, ça, ça doit plutot faire un 100% proc, non? Perso, si mon navigateur me fait ça, je le tue....
    A mon avis, c'est trop sale pour avoir sa place dans la FAQ....
      0  0

  9. #49
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Citation Envoyé par denisC
    Là, j'avoue ne pas comprendre ce code. Pourquoi ouvrir une fenetre sur soi même alors qu'un window.opener = self; suffit? Cette deuxième solution parait plus claire, non?
    C'est plus court et surtout c'est plus propre

    Faudrait tester. Ca apporte quoi par rapport à passer par le nom de la frame dans le vecteur frames?
    http://javascript.developpez.com/faq...e#frame.reload
    C'est une autre aleternative... Et puis surtout, qui a dit que la frame avait un attribut name ? Ici je passe par l'ID... en plus ca a le mérite de montrer comment obtenir le "document" de la fenêtre pour interargir avec celui-ci. deplus, cela a le mérite de fonctionner même si l'iframe est ajoutée dynamiquement (innerHTML, appendChild, ...)

    Euh, ça interromps pas le script, ça, ça doit plutot faire un 100% proc, non? Perso, si mon navigateur me fait ça, je le tue....
    A mon avis, c'est trop sale pour avoir sa place dans la FAQ....
    Oui, je suis d'accord avec toi (enfin si c'est pour stopper le script une secconde, alors ca va, juste faut pas abuser ) Je ne fais ici qu'une compil de ce que j'ai vu d'intéressant durant la semaine... (Le sujet y a tout de meme été abordé 2 fois)... Après bon, faut voir ce qui mérite vraiment d'aller dans la FAQ...

    Au fait, voici un autre truc sur le sujet, qui lui est plus "propre" mais moins intéressant : http://www.developpez.net/forums/sho...d.php?t=233235
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey
      0  0

  10. #50
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Utiliser les RegExp pour ajouter qqchose au début et à la fin d'élements :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert("0 a 1 b 2 c".replace(new RegExp("[0-9]*","g"),"\nlettre n° $1 :"));
    Ajouter automatiquement des liens aux adresses web :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <script type="text/javascript"><!--
       var reg=new RegExp("((http://)[a-zA-Z0-9/.]+)+","gi");
       var chaine="Cliquez sur ce lien http://www.google.fr ou sur celui-ci http://www.google.com !";
       document.write("Chaîne d'origine : " + chaine + "<BR>");
       document.write("Chaîne traitée : " + chaine.replace(reg, "<A href='$1' target=_blank>$1</A>") + "<BR>");
    --></script>
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey
      0  0

  11. #51
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    evaluer les styles en ajax:
    http://www.developpez.net/forums/sho...d.php?t=235131

    Voilà l'idée, il reste du travail
      0  0

  12. #52
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Citation Envoyé par denisC
    evaluer les styles en ajax:
    http://www.developpez.net/forums/sho...d.php?t=235131

    Voilà l'idée, il reste du travail
    Ok, je m'y attèle !

    Je vais modier ma fonction "setInnerHTML" pour que cela soit compatible

    PS : Il s'agit bien de parser les balises <style>'s ajoutées dynamiquement n'est-ce pas ?
    Citation Envoyé par FremyCompany
    EDIT :: Ben en fait, sur FF ca marche sans problème, sans même faire de changement, et sur IE, le simple fait de faire "x.innerHTML=HTML" supprime les balises <style>'s, qu'IE jugent être dans un mauvais contexte... je vois donc pas de solution... si ce n'est peut-être l'utilisation de regExp... c'est à essayer... je vous tiens au courrant...
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey
      0  0

  13. #53
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par FremyCompany
    PS : Il s'agit bien de parser les balises <style>'s ajoutées dynamiquement n'est-ce pas ?
    Tout à fait, parser les balises style introduite, et mettre en place les propriétés dans le vecteur styleSheets directement en JS.

    pour ton aide Fremy!
      0  0

  14. #54
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Points : 2 557
    Points
    2 557
    Par défaut
    Comment recréer la fonction is_array de php ?
    (c'est à dire comment savoir si un paramètre est un tableau ?)

    En utilisant cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function isArray(object)
    {
         return (object instanceof Array);
    }
      0  0

  15. #55
    Membre expert
    Avatar de Bestiol
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 515
    Points : 3 894
    Points
    3 894
    Par défaut
    Ce topic est maintenant bloqué.

    Merci de lire le post sur la nouvelle organisation du forum pour poster vos contributions
    Mea est trop forte, elle flotte : mea coule pas !

    Basically this boot sector (Win95) code is 32 bit extension for a 16 bit patch to an 8 bit boot sector originally coded for a 4 bit microprocessor, written by a 2 bit company, that can't stand 1 bit of competition.

    olance.developpez.com
    Servez-vous, profitez, abusez de la FAQ Delphi !!
      0  0

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