moteur edition/rechercher pb avec ff (document.layers ?)
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:
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 </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:
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;
} |