COLORISE LES MOTS D'UNE PAGE (APRES RECHERCHE)

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 - 17 nov. 2004 à 21:53
takali Messages postés 29 Date d'inscription mardi 19 avril 2005 Statut Membre Dernière intervention 13 octobre 2008 - 2 juin 2005 à 18:47
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/27562-colorise-les-mots-d-une-page-apres-recherche

takali Messages postés 29 Date d'inscription mardi 19 avril 2005 Statut Membre Dernière intervention 13 octobre 2008
2 juin 2005 à 18:47
Slt tous le monde, je trouve se script sympa

je voulais savoir si il été possible defectuer la même recherche avec plusieurs mots clés?

Et aussi si un tel script peu rechercher dans une ifram ?

Voila

J'espere avoir bientôt une reponse

En tous cas

bon boulot

Emilie
takali Messages postés 29 Date d'inscription mardi 19 avril 2005 Statut Membre Dernière intervention 13 octobre 2008
2 juin 2005 à 18:47
Slt tous le monde, je trouve se script sympa

je voulais savoir si il été possible defectuer la même recherche avec plusieurs mots clés?

Et aussi si un tel script peu rechercher dans une ?

Voila

J'espere avoir bientôt une reponse

En tous cas

bon boulot

Emilie
chimelpremier Messages postés 544 Date d'inscription vendredi 5 décembre 2003 Statut Membre Dernière intervention 20 mai 2005
3 avril 2005 à 00:44
Voila ma version DHTML si ça intéresse qqun:
<html>
<head>
<style type="text/css">
.surligne
{
color: #C30;background-color: #ffa;
}
</style>
<title>Recherche</title>
<script type"text/javascript">
function recherche(chaine)
{
var i=posChaine=posTag=finTag=n=0;doc1=doc2=''
//doc1 : texte avant un tag
//doc2 : texte final
var doc = document.body.innerHTML
el=''+chaine+''
if(chaine=='')return
while(doc!='' && n<999)// n pour éviter la boucle infinie
{
posTag=doc.indexOf('<') //position d'un début de balise HTML
doc1=doc.substr(0,posTag) // bout de texte avant un tag
while(doc1.indexOf(chaine)!=-1 && i<99) //tant qu'on trouve une occurence de la chaine
{
posChaine=doc1.indexOf(chaine); // position occurence trouvée
doc2+=doc1.substr(0,posChaine)+el // texte avant occurence + élément ajouté
doc1=doc1.substr(posChaine+chaine.length,doc1.length) // doc1 restant
i++
}
doc2+=doc1 // on ajoute doc1 restant après la sortie de boucle
finTag=doc.indexOf('>')
doc2+=doc.substring(posTag,finTag+1) // ajoute le tag
doc=doc.substr(finTag+1,doc.length) //reste du texte
n++
}
document.body.innerHTML=doc2+doc // complète avec le reste de texte

document.getElementById('nbr').value=" "+i+" éléments trouvés";
document.getElementById('toto').value=""
}
</script>
</head>


Recherche de texte dans tout le document

<form name="form" method="post" action="index.html">
Rechercher :




</form>


un texte qui ne sert à rien d'autre qu'à illustrer
la fonctionnalité de ce script

un texte qui ne sert à rien d'autre qu'à illustrer
la fonctionnalité de ce script

un texte qui ne sert à rien d'autre qu'à illustrer
la fonctionnalité de ce script

un texte qui ne sert à rien d'autre qu'à illustrer
la fonctionnalité de ce script

un texte qui ne sert à rien d'autre qu'à illustrer
la fonctionnalité de ce script

un texte qui ne sert à rien d'autre qu'à illustrer
la fonctionnalité de ce script



Comment ça marche :


J'ai utilisé les méthodes indexOf() et substr() pour chercher les occurences de la chaine en évitant les tags HTML. Puis reconstruction de la page dans la variable doc2.



</html>
rttb Messages postés 290 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 25 avril 2008
30 nov. 2004 à 17:15
tu crees un style dans la balise <HEAD> comme d'habitude :

<style type="text/css">
<!--
.Style1 {color: #CC3300;
background-color: #000066;
}
-->
</style>

puis a la place de
motrecherche.pasteHTML(""+chaine+"");

tu mets :
motrecherche.pasteHTML(''+chaine+'');

Tous les 'delires' des CSS applicables au texte sont possibles, la fonction reecris le code html, alors tu fais ce que tu veux..
theXman Messages postés 37 Date d'inscription mardi 25 février 2003 Statut Membre Dernière intervention 11 mars 2006
30 nov. 2004 à 10:11
j'essaie de remplacer la 'colorisation' du texte par une couleur de fond avec bgcolor. Mon problème est que j'utilise une table pour appliquer le bgcolor uniquement au mot recherché ce qui provoque des retours à la ligne dans mon texte final

une solution?

merci
rttb Messages postés 290 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 25 avril 2008
23 nov. 2004 à 19:35
merci, cela fait plaisir
theXman Messages postés 37 Date d'inscription mardi 25 février 2003 Statut Membre Dernière intervention 11 mars 2006
22 nov. 2004 à 10:33
C'est du plus bel effet, merci à toi
rttb Messages postés 290 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 25 avril 2008
19 nov. 2004 à 17:59
createTextRange est une methode de la librairie msdn, donc je pense qu'elle ne fonctionne que sous IE, je n'ai pas trouvé d'equivalent pour les autres naviguateurs, faut utiliser IE ou un IE amelioré...
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
17 nov. 2004 à 21:55
window.document.body.createTextRange()
is not a function

c'est Mozila qui l'a dit...
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
17 nov. 2004 à 21:53
ça m'a l'air interessant mais si t'as une solution pour le faire tourner sous Konqueror ou tout rendu gecko (Mozilla par exemple...)... je suis prenneur...
Rejoignez-nous