Partage
  • Partager sur Facebook
  • Partager sur Twitter

Fonction qui ne marche que sur MFF

J'ai essayé sur IE et Chrome, ça bug ;'( !

    6 octobre 2009 à 18:53:22

    Bonjour,

    Cette fonction JavaScript ne marche ni sous Internet Explorer, ni sous Google Chrome.
    Par contre avec Mozilla FireFox ça fonctionne impec (j'ai pas essayé les autres navigateurs) :
    <html>
    <head>
    <script>
    function insertTag(startTag, endTag, textareaId, tagType)
    {
    	var field = document.getElementById(textareaId);
    	var scroll = field.scrollTop;
    field.focus();
    
    	  if (window.ActiveXObject)
    	  {
    		var textRange = document.selection.createRange();
    		var currentSelection = textRange.text;
    	  }
    	  else
    	  {
    	    var startSelection   = field.value.substring(0, field.selectionStart);
    	    var currentSelection = field.value.substring(field.selectionStart, field.selectionEnd);
    	    var endSelection     = field.value.substring(field.selectionEnd);
    	  }
    
    	if (window.ActiveXObject)
    	{
    	  textRange.text = startTag + currentSelection + endTag;
    	  textRange.moveStart('character', -endTag.length-currentSelection.length);
    	  textRange.moveEnd('character', -endTag.length);
    	  textRange.select();
    	}
    	else // Ce n'est pas IE
    	{
    	  field.value = startSelection + startTag + currentSelection + endTag + endSelection;
    	  field.focus();
    	  field.setSelectionRange(startSelection.length + startTag.length, startSelection.length + startTag.length + currentSelection.length);
    	}
    
    field.scrollTop = scroll;
    }
    </script>
    </head>
    <body>
    <form action="commentaires_traitement.php" method="post">
    <p>
    
    <p>
    <!-- Les options du select ne fonctionnent pas sous IE et Chrome -->
    <select>
    <option value="Select" selected="selected">Couleur du texte</option>
    <option>Noir (par défaut)</option>
    <option class="bleu" onclick="insertTag(' <couleur=bleu>TEXTE EN BLEU</couleur> ', '', 'textarea');" >Bleu</option>
    <option class="vert" onclick="insertTag(' <couleur=vert>TEXTE EN VERT</couleur> ', '', 'textarea');" >Vert</option>
    </select>
    <!-- ********************************************************** -->
    
    
    <!-- Les <input /> fonctionnent bien sur tous les navigateurs (que j'ai testés) -->
    <input type="button" value="Citation" onclick="insertTag('<citation><auteur>AUTEUR DE LA CITATION</auteur>CITATION</citation >', '', 'textarea');" />
    <input type="button" value="Gras" onclick="insertTag('<gras>  </gras>', '', 'textarea');" />
    <!-- ************************************************************************** -->
    
    
    <!-- Et les <img> fonctionnent aussi sur tous les navigateurs -->
    <img src="../images/smileys/smile.png" onclick="insertTag('  ', '', 'textarea');" />
    <img src="../images/smileys/langue.png" onclick="insertTag('  ', '', 'textarea');" />
    <!-- ******************************************************** -->
    </p>
    
    
    
    <textarea name="message" onkeyup="preview(this, 'previewDiv');" onselect="preview(this, 'previewDiv');" id="textarea" cols="60" rows="30"></textarea>
    
    
    
    
    <br /><br /><br />
    <input type="submit" value="J'envoie mon com' !" />
    </p>
    </form>
    </body>
    </html>
    


    En gros, le but de la fonction c'est que lors du clic (sur un élément de la liste déroulante par exemple) ça inscrit automatiquement le texte entre les 1ères ''.
    Donc je résume ce qui marche/ce qui marche pas :
    • Sur Internet Explorer : ça affiche bien le texte dans le <textarea> lorsqu'on clique sur les smileys ou les boutons mais pas les <option> du <select>
    • Sur Google Chrome : la même chose que Internet Explorer
    • Sous Mozilla FireFox : tout fonctionne bien


    Comme je ne m'y connais pas trop en JavaScript, je ne vois vraiment pas où sa cloche...

    Une idée ?
    • Partager sur Facebook
    • Partager sur Twitter

    Fonction qui ne marche que sur MFF

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown