Moteur de recherche interne Web, OK IE, Firefox 50%
fb_68
Messages postés4Date d'inscriptionvendredi 11 mai 2007StatutMembreDernière intervention22 mai 2007
-
11 mai 2007 à 11:02
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 2013
-
21 mai 2007 à 10:25
Bonjour,
Novice en javascript, j'ai modifié un code source existant du site Web Creation pour y ajouter quelques fonctionnalités.
Le script est un moteur de recherche interne à la page (un CTRL+F amélioré).
Mon problème est que l'event.keycode ne fonctionne pas sour Firefox (mon code n'est surement pas propre).
Au lancement de la page, le curseur se trouve directement dans le champ de saisie.
On tape un mot puis Entréepour aller au mot suivant Rpour lancer une nouvelle recherche Z.
(Ces deux dernières fonctions de marchent pas sous Firefox)
Si quelqu'un a une idée pour rendre le script totalement compatible avec le petit renard, je suis preneur. Thx
Dans le head :
<script language="JavaScript">var win window; var n 0;
function findInPage(str) {
var txt,i,found;
if (str == "") {
alert("Veuillez entrer un mot à chercher");
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");
ActiveTouches();
}
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 page.");
search.quoi.focus(); }
}
} 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 page.");
search.quoi.focus(); }
}
return false;
}
function backhome(e){
if (document.all){
if (event.keyCode==114) {
findInPage(document.search.quoi.value);
}
RAZ();
} else {
findInPage(document.search.quoi.value);
}
}
function ActiveTouches() {
document.onkeypress=backhome
}
function DesactiveTouches() {
document.onkeypress="";
}
function RAZ() {
if (event.keyCode==122) {
event.keyCode="";
search.quoi.value="";
search.quoi.focus();
DesactiveTouches();
}
}
</script>
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 11 mai 2007 à 11:32
Bonjour,
avec FF et consor, il faut utiliser evt.which à la place de event.keyCode
il faut aussi "suivre" les évènements clavier.
du style ( il y a des exemples sur ce site )
var ie false; /*@cc_on ie true; @*/
document.getElementById("élément où saisie caractères").onkeyup = function(event)
{
event = event?event:window.event;
Touche(event);
}
function Touche(evt)
{ var tch;
if ( ie ) { tch=event.keyCode; }
else { tch=evt.which; }
if ( tch==valeur... ) ...