JDNet | Solutions | Emploi | Votre high-tech
 
Linternaute | Copainsdavant
Séminaires & Evénements | Etudes
   

Rechercher  

 
Sociétés Prestataires Carnet Formations Progiciels Encyclo Fonds Guide d'achat Comparateur Téléchargement Livres
Actualités
   2003
   2002
   2001
   Livres
Rubriques
   Java/J2EE
   PHP
   XML
   Client Web
   Technos .NET
   Flash
   Algo/Méthodes
   Outils

Dossiers
   Tous les dossiers

   PHP, Flash, SVG
   Perl / CGI - SSI
   Langages Web
   Services Web
   Sécurité
Ressources
   Interviews

   Téléchargement
   Composants
   Documentation
Contacts
   Rédaction
   Webmaster
© Benchmark Group

Réaliser des "bulles d'aide" en Javascript

Nous nous proposons de réaliser un petit Javascript qui nous permette, quand la souris survole un lien, d'afficher sous forme de fenêtre "pop-up" une "bulle d'aide" contextuelle. Pour cela, nous allons définir un objet bulle dont le constructeur aura cette forme:

function bulle(nom, msg, largeur, hauteur, couleur) {...}

L'argument "nom" désigne le titre de la fenêtre "pop-op", l'argument "msg" le message qui y apparaîtra, les arguments "largeur" et "hauteur" ses dimensions et, enfin, l'argument "couleur" sa couleur de fond.
Nous définirons une largeur, une hauteur et une couleur de fond par défaut, ce qui nous dispense de préciser les trois derniers arguments.
Notre objet devra comporter (sous forme d'attributs), un pointeur sur un objet "fenêtre" (afin d'accéder aux méthodes d'ouverture, de fermeture, etc. d'une fenêtre), et un pointeur sur une "durée" (la durée après laquelle s'affichera la fenêtre depuis l'instant où l'événement onMouseOver est intercepté). Nous utiliserons la fonction setTimeout() pour régler cette durée. Cette fonction prend en argument un objet (ici la fonction d'affichage de la fenêtre) et un entier (la durée voulue en millisecondes), et renvoie un pointeur (le pointeur voulu). Ainsi, nous définirons bulle() comme suit:

function bulle(nom, msg, largeur, hauteur, couleur) {
  this.nom = nom;
  this.msg = msg;
  this.duree = null;
  this.fenetre = null;
  this.LARGEUR = 300;
  this.HAUTEUR = 200;
  this.COULEUR = "#FFFFFF";
  this.DUREE = 100;
  if (largeur) this.largeur = largeur;
  else this.largeur = this.LARGEUR;
  if (hauteur) this.hauteur = hauteur;
  else this.hauteur = this.HAUTEUR;
  if (couleur) this.couleur = couleur;
  else this.couleur = this.COULEUR;
  return this;
}

et trois méthodes associées aux objets formés à partir de cette fonction: debutAide(), afficherAide() et finAide(). La première est chargée de "régler" la durée, comme suit:

function debutAide() {
  var temp="top." + this.nom + ".afficherAide()";
  this.duree = setTimeout(temp, this.DUREE);
}


La seconde affiche la fenêtre, s'il y a lieu de le faire (si ce n'est pas déjà fait) si l'événement onMouseOver est intercepté:

function afficherAide() {
  if (!this.fenetre || !this.fenetre.name || this.fenetre.name=="")
    this.fenetre = window.open(
                        "",
                        "subWindow",
                        "toolbar=no," +
                        "location=no," +
                        "directories=no," +
                        "status=no," +
                        "menubar=no," +
                        "scrollbars=no," +
                        "resizable=no," +
                        "width=" + this.largeur + "," +
                        "height=" + this.hauteur);
  else
    this.fenetre.focus();
    this.fenetre.document.open();
    var temp= "<HTML><BODY BGCOLOR='" + this.couleur + "'><P>" + message + "</BODY></HTML>";
    this.fenetre.document.write(temp);
    this.fenetre.document.close();
}


et la troisième ferme cette fenêtre lorsque l'événement onMouseOut est intercepté:.

function finAide() {
  clearTimeout(this.duree);
  if (this.fenetre && this.fenetre.name) {
    this.fenetre.close();
    this.fenetre=null;
  }
}

Il nous reste alors à associer ces méthodes à notre "classe" bulle, par l'intermédiaire d'un objet "prototype":

new bulle();
bulle.prototype.debutAide = debutAide;
bulle.prototype.afficherAide = afficherAide;
bulle.prototype.finAide = finAide;

Et nous pourrons déclarer notre objet proprement dit, que nous appellerons par exemple "mabulle":

var message="texte du message";
var mabulle = new bulle("mabulle", msg, 300, 200, "#FFFFFF");

Il est important que le nom de l'objet soit identique au titre de la fenêtre, car nous utilisons celui-ci pour identifier notre objet dans la fonction debutAide (var temp="top." + this.nom + ".afficherAide()").

La dernière étape consiste à produire le code HTML associant le passage de la souris sur un lien à notre script.

[Jérôme Morlon 13 mars 2001 , JDNet]

Gratuit - Les nouveautés de
JDNet Développeurs
Toutes nos newsletters
 

Quel est le meilleur langage pour aborder la programmation ?
Basic (VB & co...)
C/C++
Java/C#
PHP
Pascal/Delphi
Perl
Python
autre...



Les outils de développement dans le Guide des Solutions
e-business

L'encyclopédie JDNet Toutes les notions pratiques, techniques et économiques relatives à l'e-business.
>> Accès à la rubrique "Développement"

Comparez les prix Matériel, PDA, modems...
Les bonnes affaires de la high-tech avec Kelkoo.
>> Comparateur

Société | Contacts | Publicité | Presse | Recrutement | Tous nos sites | Données personelles
Pour tout problème de consultations, écrivez au Webmaster.
© Benchmark Group, 4 rue diderot 92156 Suresnes Cedex