RECHERCHER ET REMPLACER UN MOT DANS UN TEXTE

XtremDuke Messages postés 626 Date d'inscription samedi 28 septembre 2002 Statut Membre Dernière intervention 18 mai 2009 - 25 oct. 2007 à 16:36
jdmcreator Messages postés 647 Date d'inscription samedi 30 décembre 2000 Statut Membre Dernière intervention 20 juillet 2012 - 1 mars 2009 à 01:26
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/44499-rechercher-et-remplacer-un-mot-dans-un-texte

jdmcreator Messages postés 647 Date d'inscription samedi 30 décembre 2000 Statut Membre Dernière intervention 20 juillet 2012 7
1 mars 2009 à 01:26
Bonjour,

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

A+

JDMCreator
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
7 nov. 2007 à 00:42
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
5 nov. 2007 à 16:42
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
5 nov. 2007 à 16:08
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
31 oct. 2007 à 10:53
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
cs_lgh Messages postés 41 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 8 avril 2009
30 oct. 2007 à 11:26
Bonjour,
Je viens de vérifier le fonctionnement de la source sur firefox.
1/ Celui-ci ne demande pas de déclaration mais un formulaire pour fonctionner (or le xhtml ne le rend plus obligatoire...).
2/ Celui-ci ne reconnait semble-il pas les méthodes DHTML employées telles "objet.createTextRange()".
Celles-ci serait sauf erreur ou omission donc, exclusives IE.
Safari?

LGH

PS: A qui dois-je cette note encourageante, curieuse application de la charte!
XtremDuke Messages postés 626 Date d'inscription samedi 28 septembre 2002 Statut Membre Dernière intervention 18 mai 2009 4
29 oct. 2007 à 17:14
As-tu testé ta source sous Safari ?
cs_lgh Messages postés 41 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 8 avril 2009
29 oct. 2007 à 11:44
Bonjour roro,

J'aimerais bien lire la référence sur laquelle tu t'appuis. Cela me serait bien utile.
Mais en attendant, et même si firefox est un peu sensible, je me permes d'insister... Nulle part je n'ai rencontré d'obligation de "déclaration d'objet" dans le cas de figure qui nous préoccupe ici.
A tout hazard, j'ai repris la source en doublant les attributs des balises d'input et de textarea (xhtml transitional) et j'ai fait la différence entre les variables du script mais je ne vois pas ce que je peux faire de plus.
LGH
cs_roro06 Messages postés 732 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 29 octobre 2007
29 oct. 2007 à 10:54
Bonjour

C'était pas le but de mon commentaire, je ne vais pas entrer dans des trolls stupides et stériles, mais le développement javascript necessite de s'assurer du fonctionnement sur un maximum de plateformes possibles.
cs_lgh Messages postés 41 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 8 avril 2009
29 oct. 2007 à 10:13
Bonjour,

Ce que je pense de Firefox ?
Je ne sais que dire.
LGH
cs_roro06 Messages postés 732 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 29 octobre 2007
29 oct. 2007 à 09:43
Bonjour

Il n'y a qu'IE qui accepte sans avoir au préalable déclaré ton objet, comme le fait très justement remarquer XtremDuke. FFx renvoie comme messages d'erreur : "aire is not defined" et "t1 is not defined"

Petit bug : la fonction "remplacer" ne marche pas après utilisation de "chercher"
snpier wolf Messages postés 216 Date d'inscription samedi 11 août 2007 Statut Membre Dernière intervention 30 mai 2011
29 oct. 2007 à 09:06
bonjours,
bon normalement je "fait" du c++, mais le javasript je trouve sa asser fort bravo pour ton code.
A++
cs_lgh Messages postés 41 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 8 avril 2009
27 oct. 2007 à 14:36
Bonjour xtrem...,
Si, je peux utiliser aire sans l'avoir déclaré au préalable, de même pour t1 et t2. Ils ne sont que des valeurs des attributs id et name des éléments textarea et input dans le document html.
(NB: Dans le doute j'ai feuilleté divers tutoriels y compris Introduction au javascript sur ce site et rien de ce que tu avances n'est précisé...).
LGH
XtremDuke Messages postés 626 Date d'inscription samedi 28 septembre 2002 Statut Membre Dernière intervention 18 mai 2009 4
26 oct. 2007 à 13:28
Je ne parlais pas de l'extrait mais bel et bien de ta source.
Tu ne peux pas utiliser si tu n'a pas définis "aire" au préalable. "air" est l'identifiant de ton objet, pas ton objet. Et c'est la même chose pour t1, t2 etc...
cs_lgh Messages postés 41 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 8 avril 2009
26 oct. 2007 à 07:32
Bonjour,
Une précision afin de répondre à xtrem...
Le code proposé ci-dessus n'est qu'un extrait de la source.
Tout est dans le zip.
LGH
XtremDuke Messages postés 626 Date d'inscription samedi 28 septembre 2002 Statut Membre Dernière intervention 18 mai 2009 4
25 oct. 2007 à 16:36
Je rentre pas dans les détails mais tu as oublié de déclarer tes objets.

var air = document.getElementById('air'); // par exemple...
Rejoignez-nous