11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour toutes et tous et tout mes voeux 2009

Voila vous pouvez copier coller dans un 0test.htm ... mon exemple.

ce java-script permet d'ajouter sur trois balises classiques
la balise choisie autour du texte préselectionné, ou si aucun texte n' est sélectionné, les balises sont rajoutées en fin de texte !

Rien de nouveau bien sur , mais on me dit que ça ne marche pas du tout avec certains navigateurs

Alors merci d' avance pour ce joyeux nouvel an de me donner
le code idéal pour étre FullCompatible ... en me complétant mon exemple si possible


<html>
<body>
<p align="center">
&nbsp;<A href="javascript: Ajout('b');">GRAS</A>&nbsp;
&nbsp;<A href="javascript: Ajout('i');">Italique</A>&nbsp;
&nbsp;<A href="javascript: Ajout('u');">Souligne</A>&nbsp;
<br /><br />
<form name='LeForm' action='0test.htm' method='POST'>
<textarea rows='24' name='LArea' id='LArea' cols='70' wrap='virtual' ></textarea>
<br /><br />
<input type='submit' value='Validez'>
</form>
</p>

<script language="JavaScript" type="text/javascript">
<!--
function Ajout(Lui)
{
 var mess = document.LeForm.LArea;
 if (Lui=="b" ||  Lui=="u" || Lui=="i")
  {
    if (!document.selection) vapa=99;
     else
     {
       mess.focus();
       sel = document.selection.createRange();
      if ( sel.text !="")
       {
       sel.text = "["+Lui+"]" + sel.text + "[/" + Lui+"]";
       document.LeForm.focus();
       }
       else {
             Tout=document.LeForm.LArea.value;
             document.LeForm.LArea.value=Tout+"["+Lui+"]"+"[/"+Lui+"]";
             }
     }
  }

}
//-->
</script>
</body></html>



Salut,

Tu peux essayer comme cela, ne me demande pas de tout expliquer, de toute façon il n'y a aucune méthode réellement propre pour faire ça :

function pasteCode(txtarea, open, close){

   txtarea.focus();

   if (window.ActiveXObject){

      var range = txtarea.createTextRange();
      var docRange = document.selection.createRange();
     
      range.moveToBookmark(docRange.getBookmark());
	
      var theSelection = docRange.text;
      if(close) docRange.text = open + theSelection + close;
      else docRange.text = open;
		
      range.moveStart('character', open.length);
      range.collapse();
      range.select();

   }else{
	
      var selLength = txtarea.value.length;
      var selStart = txtarea.selectionStart;
      var selEnd = txtarea.selectionEnd;
      var selTop = txtarea.scrollTop;
	
      var s1 = (txtarea.value).substring(0,selStart);
      var s2 = (txtarea.value).substring(selStart, selEnd)
      var s3 = (txtarea.value).substring(selEnd, selLength);

      if(close) txtarea.value = s1 + open + s2 + close + s3;
      else txtarea.value = s1 + open + s3;
    
      setSelStart = selStart + open.length;
      txtarea.setSelectionRange(setSelStart, setSelStart);
	  
  }
  
  txtarea.scrollTop = selTop;
  txtarea.focus();
  return;
    
}


Ça c'est la fonction qui va te permettre de coller du html dans ta sélection, pour l'utiliser tu fais comme ça :


var mess = document.LeForm.LArea; //getElementById serait preferable
pasteCode(mess, '[[title]]', [/title]');

Modifié par matmat (11 Jan 2009 - 14:43)
Petit problème d´édition sur le forum, je compléterais ma réponse plus tard

Edit: corrigé
Modifié par matmat (11 Jan 2009 - 14:43)