1 / 25

DHTML

les concepts et applications du Dynamic HTML. DHTML. Préambule. On peut considérer le DHTML comme du JavaScript appliqué aux feuilles de styles (CSS) ‏ Ce n'est pas un langage à proprement parler, mais plutôt une forme d'écriture mettant en oeuvre plusieurs technologies.

abra
Download Presentation

DHTML

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. les concepts et applications du Dynamic HTML DHTML

  2. Préambule • On peut considérer le DHTML comme du JavaScript appliqué aux feuilles de styles (CSS)‏ • Ce n'est pas un langage à proprement parler, mais plutôt une forme d'écriture mettant en oeuvre plusieurs technologies. • DHTML est très rigoureux syntaxiquement parlant. • DHTML ne réclame aucun plugin supplémentaire • Consultez http://www.w3.org/DOM/ • Plus que jamais, les tests sur différents navigateurs, dont l'incontournable IE, sont indispensables.

  3. Document Object Model • Le DOM définit : • La structure logique des objets • L'accès aux objets • La manipulation des objets • Tout ce qui se trouve dans un document html ou xhtml peut être modifié, créé ou supprimé en utilisant le DOM • Le DOM fournit aussi la gestion des événements, pour intercepter les « actions » du navigateur ou de l'utilisateur • En fait, le DOM constitue une extension des notations vues dans les cours JavaScript. • window.document.formu1.champs1.value : c'est du DOM ! • D'autres objets de la page HTML on été rendus accessibles

  4. Premier exercice • Tapez le code suivant : • <html> • <head> • <title></title> • </head> • <body> • <script type="text/javascript"> • if (document.getElementById && document.createElement) { • document.write("Il semblerait que nous puissions tester le DHTML !"); • } • </script> • </body> • </html> • Si les instructions DHTML fonctionnent ... donc on passe à la suite ...

  5. Accéder à un objet par son ID • Vous savez que tout objet XHTML peut être identifié par un id. • <div id= "lebouton"> • La CSS permet d'y ajouter des attributs • #lebouton { ......... } • La méthode DHTM getElementById va nous permettre d'accéder à un objet par son id et le modifier. • Imaginons une div incluant un formulaire et un boutton. L'appui sur le bouton va changer la couleur de fond de la DIV. • Le code se trouve page suivante :

  6. Accéder à un objet : le code • <script type="text/javascript"> • function cc(chose)‏ • { • var boite=document.getElementById(chose); • boite.style.backgroundColor="#ff0000"; • } • </script> • <div id="toto"> • debut de la div • <form><input type="button" onClick="cc('toto')" value="Change de couleur" /></form> • fin de la div • </div>

  7. Accéder à un objet par son nom • Vous savez que tout objet XHTML peut être identifié par un nom • <div name="lebouton"> • Comme personne n'est parfait, il est possible de trouver sur une même page plusieurs objets ayant le même nom. • Ainsi la méthode s'appelle getElementsByName. Elements avec un s. • Mais il faudra fournir un indice correspondant à l'objet que l'on veut atteindre : • getElementsByName("toto")[1] • Accède au deuxième objet nommé toto. (le premier a l'indice 0, comme d'hab ... • Reprenez votre code, et faites un test.

  8. Le code • A copier coller plusieurs fois • <div name="toto"> debut de la div • <form><input type="button" onClick="cc('toto')" value="Change de couleur" /></form> • fin de la div</div> • Et la fonction JS • <script type="text/javascript"> • function cc(chose)‏ • { • var boite=document.getElementsByName(chose)[1]; • boite.style.backgroundColor="#ff0000"; • }

  9. Accéder à un objet par son type • Vous savez aussi ce qu'est une balise. (celui qui répond non sera jeté aux lions)‏ • La méthode getElementsByTagName permet d'accéder à tous les objets créé par la balise passée en arguments. • La aussi Elements avec un s, c'est mieux. • Et la aussi, il faudra fournir un indice correspondant à l'objet que l'on veut atteindre : • getElementsByTagName("div")[4] • Accède à la 5 eme DIV.. • Même cause, même punition : Reprenez votre code, et faites un test.

  10. Le code • A copier coller plusieurs fois • <div> debut de la div • <form><input type="button" onClick="cc()" value="Change de couleur" /></form> • fin de la div</div> • Et la fonction JS • <script type="text/javascript"> • function cc()‏ • { • var boite=document.getElementsByTagName("div")[1]; • boite.style.backgroundColor="#ff0000"; • }

  11. Accéder à un événement • Vous savez aussi ce que sont les événements. Pour ce premier exemple, interessons nous aux clics de la souris sur un objet. • L'événement est donc onClick • Prenons une boite DIV est faisons la se déplacer lorsque l'on clique dessus. • Nous utiliserons getElementById • #boite1 { position:absolute; background-color:#0f0;width:100px;height:80px; top:0px; left:0px} • <div id="boite1" onClick="bougedela()">cliques moi</div> • function bougedela() { • var boite=document.getElementById("boite1"); • boite.style.top=150+"px"; • boite.style.left=350+"px"; • } • A vos claviers ...

  12. Passer un événement à une fonction • Tous les événements du navigateur produisent des informations que l'on peut récupérer et passer en arguments • Reprenons l''exemple précédent : Cette fois ci, le clic de la souris indiquera la nouvelle position de la boite. • Nous utiliserons le paramètre event et nous utiliserons dans celui-ci clientX et clientY • Attachez l'événement onClick au body • function bougedela() { • var boite=document.getElementById("boite1"); • boite.style.top=event.clientY+"px"; • boite.style.left=event.clientX+"px"; • } • A vos claviers ...

  13. L'objet Event • Avec l'objet event vous pouvez rechercher et traiter des informations distinctes sur les évènements utilisateur comme des clics de souris ou des entrées clavier. • altKey, ctrlKey, shiftKey • clientX, clientY • keyCode • layerX, layerY • modifiers • offsetX, offsetY • pageX, pageY • screenX, screenY • which • type • x,y

  14. Peut mieux faire • Avant de mieux faire dans l'esprit des exercices précédents, il faudrait connaître les limites d'évolution de nos objets. • Pour cela, il faut pouvoir récupérer les paramètres d'environnement du client. • Quelques objets sont à notre disposition : • Navigator • version, os, langue • Screen • taille et résolution • Window • taille • Document • titre

  15. Navigator

  16. Screen

  17. Window

  18. Détecter l'objet cliqué • Nous avons vu qu'il était possible de passer en paramètre event. • Apartir de cet élément, nous pouvons aussi récupérer l'id de l'objet cliqué. • On peut reprendre l'exemple précédent : • function bougedela(event)‏ • { • idobjet = event.srcElement.id; • var boite=document.getElementById(idobjet); • boite.style.top=event.clientY+"px"; • boite.style.left=event.clientX+"px"; • } • A vos claviers ... • Attention srcElement est spécifique à IE .... utilisez target sous Firefox

  19. Détecter l'objet cliqué sous IE et Firefox • Pour rendre compatible ce script il faut donc prévoir les deux cas en utilisant une syntaxe telle que • function bougedela(event)‏ • { • var idobjet = (event.target) ? event.target.id : ((event.srcElement) ? event.srcElement.id : null); • var boite=document.getElementById(idobjet); • boite.style.top=event.clientY+"px"; • boite.style.left=event.clientX+"px"; • }

  20. Détecter l'objet cliqué sous IE et Firefox et obtenir ses dimensions • Reprenez le script précédent, puisqu'il fonctionne partout et modifiez le pour récupérez la taille de la div • function bougedela(event)‏ • { • var idobjet = (event.target) ? event.target.id : ((event.srcElement) ? event.srcElement.id : null); • var boite=document.getElementById(idobjet); • var x=boite.offsetWidth; • var y=boite.offsetHeight; • alert("x:"+x+"y:"+y); • boite.style.top=event.clientY+"px"; • boite.style.left=event.clientX+"px"; • }

  21. Détecter l'objet cliqué sous IE et Firefox et obtenir sa position • Reprenez le script précédent, puisqu'il fronctionne partout et modifiez le pour récupérez la position de la div • function bougedela(event)‏ • { • var idobjet = (event.target) ? event.target.id : ((event.srcElement) ? event.srcElement.id : null); • var boite=document.getElementById(idobjet); • var x=boite.offsetLeft; • var y=boite.offsetTop; • alert("x:"+x+"y:"+y); • boite.style.top=event.clientY+"px"; • boite.style.left=event.clientX+"px"; • } • Il n'existe pas de offsetRight/offsetBottom ; faites un calcul

  22. Détecter la visibilité d'un objet • La encore même principe. Nous illustrons ici l'interaction avec les feuilles de styles, puisqu'il s'agit ici de la propriété visibility qui peut prendre comme valeur visible ou hidden. • Rappel : on cache l'élément, mais sa place est toujours occupée • function bougedela(event)‏ • { • var idobjet = (event.target) ? event.target.id : ((event.srcElement) ? event.srcElement.id : null); • var boite=document.getElementById(idobjet); • var x=boite.style.visibility; • alert(x); • } • On peut bien sur modifier l'état • boite.style.visiblity="hidden"

  23. Détecter les évènements de la souris • event.type et event.button vont nous permettre de détecter l'activité de la souris. • function bougedela(event)‏ • { • var idobjet = (event.target) ? event.target.id : ((event.srcElement) ? event.srcElement.id : null); • var boite=document.getElementById(idobjet); • var toto=window.event; • if (event.type) alert(event.type); • if (typeof event.button != 'undefined') alert("boutton : "+ event.button); • }

  24. Détecter les coordonnées du pointeur de la souris • Au chargement, on initialise l'événement à détecter, puis sur cet événement, on affiche les coordonnées : • <body onLoad="initier('boite1')"> • <div id="boite1"> • <p>Lorem ipsum dolor sit amet, ...</p> • <form name="aff"><input type="text" size="200" name="mess"></input></form> • </div> • </body> • function initier(idobjet) { • var objet=document.getElementById(idobjet); • objet.onmousedown = trouver; } • function trouver() { • var event=window.event; • window.document.aff.mess.value="navigateur x/y : "+event.clientX+"/"+event.clientY+" ecran : "+event.screenX+"/"+event.screenY; } • Attention : IE Only event.clientX, event.clientY, event.x, event.y

  25. Mouvements fluides • Puisqu'il est possible d'agir sur tous ces paramètres, il va être possible de faire bouger un objet en plusieurs étapes, pour ajouter une impression de fluidité. • Placer un objet div sur le bord gauche de l'écran. • Au clic sur ce dernier, faites le glisser progressivement jusqu'au bord droit. • setTimeout / setInterval risquent de vous servir ... • A vos claviers ...

More Related