Bonjour,

Mon souhait: simuler la fonction Edition/rechercher dans page.

'ai récupéré sur le net un bout de code qui me pose problème :
  • Il ne fonctionne pas avec firefox
  • avec ie, il fonctionne mais donne des résultats imprévisible : soit il trouve tous les termes recherché, soit il n'en trouve aucun, soit il en trouve certains.


Le problème d'incompatibilité avec Firefox ne viendrait-il pas de document.layers ? Et si oui, comment y remédier ?

Si quelqu'un avait une petite idée.

D'avance, merci.

Le code du formulaire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 <form name="search" onSubmit="return findInPage(this.string.value);">
 <span class="texte">Ou recherchez une activité dans le moteur ci-contre&nbsp;&nbsp;</span>
<font size=3>
<input name="string" type="text" size=15 onChange="n = 0;">
 
<input type="submit" value="Chercher">
</form>
et le code js
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
var n = 0;
function findInPage(str) {
	var txt, i, found;
if (str == "") {
		alert ('Vous devez taper mot');
		return false;
}
 
	if (document.layers) {
		if (!window.find(str)) while(window.find(str, false, true)) n++;
		else n++;
		if (n == 0)
			alert("Recherche infructueuse");
		}
		if (document.all) {
			txt = window.document.body.createTextRange();
			for (i = 0; i <= n & (found = txt.findText(str)) != false; i++) {
				txt.moveStart("character", 1);
				txt.moveEnd("textedit");
			}
			if (found) {
				txt.moveStart("character", -1);
				txt.findText(str);
				txt.select();
				txt.scrollIntoView();
				n++;
			}
			else {
				if (n > 0) {
				n = 0;
				findInPage(str);
			}
		else
			alert("Recherche infructueuse");
		}
	}
	return false;
}