SCRIPT - Rechercher dans une page... - HTML/CSS - Programmation
Marsh Posté le 28-03-2008 à 17:21:18
Mes conseils :
- ne pas utiliser ce script (ni aucun autre pour faire ça)
- ajouter un peut commentaire du style :
"Pour faire une recherche sur cette page, faites CTRL + F"
(ça marche pour tous les navigateurs au moins)
Marsh Posté le 28-03-2008 à 16:35:31
Bonjour,
Je suis novice en java script.
Et je voudrais faire un truc (semble-t-il) tout simple... mais ça ne marche pas.
Voilà : je voudrais mettre un petit formulaire pour chercher des termes dans une page HTML (la page va être une longue liste).
J'ai récupéré ce script :
C'est en 2 parties :
A mettre entre le <head> et le </head>
<<b style="color:black;background-color:#ffff66">script</b> language="JavaScript">
/*
<b style="color:black;background-color:#ffff66">Script</b> amélioré par le site WEB Creation :
- <b style="color:black;background-color:#a0ffff">recherche</b> le terme suivant en utilisant une touche
- activation et désactivation de l'événement touche quand on entre un mot
- adaptation aux navigateurs récents
- modification des boutons lors de la <b style="color:black;background-color:#a0ffff">recherche</b>
...
> http://www.web-creation-fr.com
*/
var IE = (document.all);
var win = window;
var n = 0;
function findInPage(str) {
var txt, i, found;
if (str == "" ) {
alert("Veuillez entrer un mot à chercher" );
search.rechercher.value="Rechercher";
search.quoi.focus();
return false;
}
if (document.all) {
txt = win.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("Le mot cherché n'existe pas sur cette <b style="color:black;background-color:#99ff99">page</b>." );
search.rechercher.value="Rechercher";
search.quoi.focus();
DesactiveTouches();
}
}
} else {
if (!win.find(str))
while(win.find(str, false, true))
n++;
else
n++;
if (n == 0) {
alert("Le mot cherché n'existe pas sur cette <b style="color:black;background-color:#99ff99">page</b>." );
search.rechercher.value="Rechercher";
search.quoi.focus();
DesactiveTouches();
}
}
return false;
}
function backhome(e){
if (document.all){
if (event.keyCode==114) {
findInPage(document.search.quoi.value);
}
} else {
if (e.which==114) {
document.captureEvents(Event.KEYPRESS);
}
findInPage(document.search.quoi.value);
}
}
function ActiveTouches() {
document.onkeypress=backhome
}
function DesactiveTouches() {
document.onkeypress="";
}
</<b style="color:black;background-color:#ffff66">script</b>>
---------------------------
A mettre entre le <body> et </body> :
<form name="search" onSubmit="return findInPage(this.quoi.value);">
<font size=3>
<input name="quoi" type="text" size=15 onChange="n = 0;"
onclick="rechercher.value='Rechercher';javascript:DesactiveTouches();">
</font>
<input type="submit" name="rechercher" value="Rechercher"
onClick="this.value='Rechercher encore';javascript:ActiveTouches();">
</form>
Je copie/colle tout bien, comme il faut, entre les deux balises... mais ça rate.
Le formulaire est là, mais il ne marche pas et il y a tout une partie du script qui apparaît en lettres sur la page.
HELP !
PS : j'indique également que la dite page n'est pas encore faite (je ne pourrai donc pas la produire). C'est pour un futur travail. J'ai juste fait des essais avec des pages HTML toutes vides produites via un WYSWYG, NAMO pour ne pas le nommer...
Pour d'autres scripts, je m'en tire bien.
Mais celui-là ne marche pas et j'en trouve pas d'autres sur le NET.
Merci d'avance.
Message édité par Sanglier le 28-03-2008 à 16:51:04