Rechercher et remplacer un mot dans un texte

Soyez le premier à donner votre avis sur cette source.

Vue 12 303 fois - Téléchargée 437 fois

Description

Un script de recherche des mots d'un texte: 2 versions, la première pour Internet Explorer sur la base d'une source trouvée sur ce site, simplifiée (débarassée de son formulaire) arrangée (alertes diverses) dotée d'une fonction de remplacement; la seconde pour Opera entièrement nouvelle.
Il est ici proposé prèt à l'emploi. 1 document en xhtml valide et 1 document js.

Source / Exemple :


function remplacer()
{
 var j;
 if (t1.value == "" || t2.value == "") alert('Choisissez un mot à chercher et/ou son remplaçant !');
 else
 {
  aire.focus();
  champ = aire.createTextRange();
  for (j = 0; j <= a && (action = champ.findText(t1.value)) != false; j++) 
  {
   champ.moveStart('character', 1);
   champ.moveEnd('textedit');
  }
  if (action) 
  {
   champ.moveStart('character', -1);
   champ.findText(t1.value);
   champ.select();
   champ.scrollIntoView();
   a++;
   if (confirm('Voulez vous remplacer le mot ?'))
   {
    champ.text = t2.value;
    document.execCommand('unselect');
    a--;
    b = 1;
   }
  } 
  else
  {
   if (a > 0) {alert('L\'opération est terminée !'); if(document.selection) {a = 0; b = 0; document.execCommand('unselect'); return false;}}
   if (b > 0) {alert('L\'opération est terminée !'); if(document.selection) {a = 0; b = 0; document.execCommand('unselect');}}
   else {alert('Le mot a remplacer n\'est pas dans le document !'); a = 0; b = 0;}
  } 
 }
}

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

jdmcreator
Messages postés
647
Date d'inscription
samedi 30 décembre 2000
Statut
Membre
Dernière intervention
20 juillet 2012
5
Bonjour,

J'ai testé avec Safari et ça ne fonctionne pas ;)

A+

JDMCreator
malalam
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
18
Hello,

@LGH => IE n'est pas très réputé pour son support inconditionnel des standards. Enfin si, des standards microsoft ;-)
Bref, attaquer, comme tu le fais, le DOM directement via la valeur de l'attribut name d'un élément html n'est pas du DOM. Le DOM est strict...et IE trop permissif. Il n'y a guère qu'IE qui acceptera ce code car la plupart des autres navigateurs récents suivent beaucoup mieux le Document Object Model.
Quant à createTextRange, c'est effectivement, encore une fois, une spécificité IE, et uniquement IE. Il y a d'autres moyens de faire, en respectant le DOM, ceci dit. Même si IE propose des spécificités bien pratiques, c'est vrai. Mais comme le soulignent tes petits camarades de commentaire, le web, c'est vaste, et il vaut mieux faire en sorte de s'adapter aux utilisateurs, plutôt que de les forcer à utiliser des outils qu'ils n'ont pas envie d'utiliser. Faut bien respecter les minorités :-)
Fwdavy
Messages postés
57
Date d'inscription
lundi 27 septembre 2004
Statut
Membre
Dernière intervention
8 novembre 2007

Il y'avais plus simple et mieux a faire :

<script>
function chercheRemplace( text, stringToFind, stringRemplacement, champDeSortie )
{
var text = text.toString() ;
var maReg = new RegExp( stringToFind, "gi") ;
var resultat = text.replace( maReg, stringRemplacement ) ;

if ( text.search( maReg ) == -1 )
alert ( "Désolé le mot " + stringToFind.toUpperCase(stringToFind) + " n\'pas été trouvé" ) ;
else
champDeSortie.value = resultat ;
}
</script>
<form>
<textarea name="aireDeTexte" cols="75" rows="7">Saisissez ici votre texte</textarea>

Rechercher :

Remplacer par:



</form>
Fwdavy
Messages postés
57
Date d'inscription
lundi 27 septembre 2004
Statut
Membre
Dernière intervention
8 novembre 2007

Ca ne remplace même pas tus les mots mais juste le premier qui est trouvé...puis ca ne controle pas le mot minuscule / majuscule. Puis la compatibilité avec les autres navgateur est importante, on parle d'une technologie Web pas d'une appli en local -_-
cs_lgh
Messages postés
41
Date d'inscription
vendredi 23 mai 2003
Statut
Membre
Dernière intervention
8 avril 2009

Bonjour,
Suite et fin pour cette source...
Essai avec opéra 9.22.
La boucle (for...) ne fonctionne pas.
L'absence de formulaire dans le document principal n'est par contre (et par rapport à firefox) pas génante.
Conclusion, méthodes de recherche par traitement d'un TextRange, IE strictement (?).

LGH

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.