11550 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

J'ai mis sur mon site ( http://www.maboite.qc.ca) une fenêtre de recherche («rechercher dans la page», accessible en haut du menu de gauche) qui fonctionne bien sous IE et Netscape, mais pas sous Firefox.

En fait, la recherche fonctionne à condition de cliquer dans la page après avoir tapé le mot à rechercher dans la fenêtre de recherche et avant de faire «suivant».

Quelqu'un a-t-il une idée sur l'origine du problème et sa résolution?

Voici le script :

var nbSearch=0;

function findInPage(str) {

  var txt, i, found;

  if (str=="") return false;

  if ((document.layers)||(window.sidebar)) {

    if (!window.find(str)) {

	  alert("Fin de page atteinte.\n"+'"'+str+'" trouvé '+nbSearch+" fois.");

	  while(window.find(str, false, true)) {nbSearch++;}

	} 

    else

      nbSearch++;

    if (nbSearch == 0)

      alert('"'+str+'" est introuvable');

  }

  if (document.all) {

    txt = window.document.body.createTextRange();

    for (i = 0; i <= nbSearch && (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();

      nbSearch++;

    } else {

      if (nbSearch > 0) {

	  	  alert("Fin de page atteinte.\n"+'"'+str+'" trouvé '+nbSearch+" fois.\nRetour au début de la page.");

        nbSearch = 0;

        findInPage(str);

      } else { 

	    alert('"'+str+'" est introuvable');

	  }

    }

  }

  return false;

}
Administrateur
Salut elle,

Je ne suis pas spécialiste en javascript, mais il me semble bien que toutes les instructions du genre "document.layers", "document.all" sont obsolètes (pour IE4 et NN4 si mes souvenirs sont bons) et il faut utiliser la syntaxe universelle "getElementByid" pour désigner un élément.

A confirmer par un spécialiste bien sûr.
Salut Raphael,

Je te remercie d'avoir répondu. Je vais vérifier cela demain et je t'en redonne des nouvelles. Merci encore!
Raphael a écrit :
Salut elle,

Je ne suis pas spécialiste en javascript, mais il me semble bien que toutes les instructions du genre "document.layers", "document.all" sont obsolètes (pour IE4 et NN4 si mes souvenirs sont bons) et il faut utiliser la syntaxe universelle "getElementByid" pour désigner un élément.

A confirmer par un spécialiste bien sûr.


Je suis pas spécialiste mais jte dis oué Smiley smile
La méthode getElementById est une méthode d'accès standard (Définie dans la spécification DOM du W3C et implémenté dans tous les navigateurs de moins de 4 ans d'age Smiley cligne ) c'est donc celle à privilégier

La méthode passant par "all" n'est utilisable que par IE (à l'origine historique de cette méthode) ainsi que Opera et Konqueror (si mes souvenir sont bon)

La méthode passant par "layer" est une méthode désuette qui était propre à Netscape 4

Voila Smiley smile
Bonjour,
personnellement, j'ai préféré indiquer comment utiliser son navigateur :
a écrit :
Utilisez la fonction "rechercher dans la page" de votre navigateur, pour obtenir l'adresse spécifique d'un établissement (dans le menu "Edition").

plutôt que de mettre du code en plus dans une page (par ailleurs très lourde).
Macpom a écrit :
Bonjour,
personnellement, j'ai préféré indiquer comment utiliser son navigateur :
Utilisez la fonction "rechercher dans la page" de votre navigateur, pour obtenir l'adresse spécifique d'un établissement (dans le menu "Edition").


Bonjour,

C'est ce que j'avais fait au tout début mais beaucoup d'utilisateurs et d'utilisatrices du site en sont à leurs premières armes avec un ordinateur, plusieurs sont des personnes âgées et, au lieu de les aider, cette indication semblait entretenir une certaine confusion. J'explique cependant comment utiliser cette fonction du navigateur ailleurs dans le site.
Bien le bonjour !
Je suis celui qui aide "elle" avec ses javascripts.
Je suis désolé, mais je ne comprends pas bien "getElementByid"

En effet, je n'ai pas créé ce sript (Honte sur moi !) en fait, je l'ai téléchargé sur toutjavascript (double honte sur moi !).
Alors, je vais bien évidemment modifier le script, mais seulement dès que j'aurai compris le concept.

NOTE : seulement le script de recherche a été pêché sur toutjavascript , le code qui me permet de faire "bouger" la boîte, je l'ai fait à partir du code d'un publicité ! Eh oui, je ne suis pas compétent pour coder en javascript, je ne suis qu'un pêcheur/bidouilleur. Smiley sweatdrop