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


Gestion des événements en DHTML (1/3): IE 4+
Les navigateurs n'ont pas forcément la même gestion des événements, piliers du DHTML. Comment procède Internet Explorer ?
Pages 2 | 3 | 4

Un "objet-événement" est accessible, sous IE, de la manière suivante:

window.event

tandis que l'élément associé à l'événement (l'élément dans lequel a eu lieu l'événement) est donné par:

window.event.srcElement

et le type de l'événement par:

window.event.type

Il existe de nombreuses autres propriétés d'un événement, comme la position du curseur de la souris au moment de l'interception de l'événement, le bouton de la souris qui a été pressé et a déclenché l'événement, etc.
Le point important, sous IE, est le suivant: lorsqu'un événement se produit, et qu'aucun event handler ne lui est associé au sein de l'élément (balise) où il a lieu, alors l'élément père (dans une arborescence de noeuds, on parle de pères et de fils), donc l'élement qui englobe notre élément initial, tente d'intercepter l'événement si un event handler lui est associé. Si ce n'est pas le cas, l'arborescence est "remontée" de nouveau, et ce jusqu'à la balise <BODY>. Un tel fonctionnement est appelé, en anglais, event bubbling.
Pour illustrer ceci, considérons le code suivant:

<html>
<head>
<script language="JavaScript">
<!--
function getElement() {
var elem = window.event.srcElement;
window.alert('Element ' + elem);
}

function getBalise() {
var balise = window.event.srcElement.tagName;
window.alert('Balise ' + balise);
}

function couleur() {
var elem = window.event.srcElement;
elem.style.color = "red";
window.event.cancelBubble = true;
}
// -->
</script>
</head>
<body onClick="getElement()">
<h1>Exemple</h1>
<div onClick="getBalise()"> Cet exemple <b>en DHTML</b> illustre le concept
d'<i>event bubbling</i> propre à <u onClick="couleur()">Internet
Explorer</u>
</div>
</body>
</html>

Il produit la page suivante. Dans celle-ci, cliquer sur le titre "Exemple" va déclencher l'événement onClick de <BODY> par event bubbling, puisqu'aucun event handler n'est associé à <H1>. A l'inverse, cliquer sur "Internet Explorer" devrait déclencher à la fois un changement de couleur et l'apparition de la fenêtre pop-up. Mais la propriété window.event.cancelBubble = true permet de supprimer l'event bubbling pour la fonction couleur().

Un autre aspect de la gestion des événements sous IE est la propriété

window.event.returnValue

qui prend les valeurs "true" et "false". La valeur "false" permet de désactiver le comportement par défaut associé à l'événement. Attribuer cette valeur à la propriété ci-dessus au sein d'une fonction permet ainsi, par exemple, de programmer un message de confirmation lors du clic sur un lien, et, en cas d'annulation, de désactiver le changement d'URL. A noter que la désactivation du comportement ne désactive pas pour autant l'event bubbling.

Suite: Netscape 4.x

Pages 2 | 3 | 4

[Jérôme Morlon 22 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