Moteur de recherche interne Web, OK IE, Firefox 50%

Signaler
Messages postés
4
Date d'inscription
vendredi 11 mai 2007
Statut
Membre
Dernière intervention
22 mai 2007
-
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
-
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>

Dans le body :

<form name="search" onsubmit="return findInPage(this.quoi.value);">

</form>

Ps: J'ai rajouté onload="javascript:search.quoi.focus();"  dans la balise body pour placer le curseur dans le champ au démarrage.

Voir fichier prêt à l'emploi joint

3 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
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... )    ...

 

<hr />


Cordialement            Bul     [mon Site]     [M'écrire]



<hr />
Messages postés
4
Date d'inscription
vendredi 11 mai 2007
Statut
Membre
Dernière intervention
22 mai 2007

Merci pour l'info.

Dommage qu'IE, FF et consor ne s'accordent pas pour le js et pour + d'ailleurs ;-)
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
>>Dommage qu'IE, FF et consor ne s'accordent pas


    au moins pour la syntaxe, parfaitement d'accord...
    ces soucis existent depuis toujours, sur de très nombreux langages, hélas.
<hr />


Cordialement            Bul     [mon Site]     [M'écrire]



<hr />