js-omfgjgj

Upload: assoka

Post on 27-Feb-2018

222 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/25/2019 js-omfgjgj

    1/62

    Javascript et DOM js-dom

    Technologies Internet et Education TECFA 3/4/08

    Javascript et DOM

    Code: js-dom

    Originauxurl: http://tecfa.unige.ch/guides/tie/html/js-intro/js-dom.html

    url: http://tecfa.unige.ch/guides/tie/pdf/files/js-dom.pdf

    Auteurs et version

    Daniel K. Schneider

    Version: 0.8 (modifi le 3/4/08)

    Prrequis

    Module technique prcdent: js -intro(Javascript lancienne)

    Voir aussi:

    Module technique suppl.: php-dom(XML DOM avec PHP 5)

    Abstract

    Introduction JavaScript et DOM

    http://tecfa.unige.ch/guides/tie/html/js-dom/js-dom.htmlhttp://tecfa.unige.ch/guides/tie/html/js-dom/js-dom.htmlhttp://tecfa.unige.ch/guides/tie/pdf/files/js-dom.pdfhttp://tecfa.unige.ch/guides/tie/pdf/files/js-dom.pdfhttp://tecfa.unige.ch/tecfa-people/schneider.htmlhttp://tecfa.unige.ch/guides/tie/html/js-intro/js-intro.htmlhttp://tecfa.unige.ch/guides/tie/html/php-dom/php-dom.htmlhttp://tecfa.unige.ch/guides/tie/html/php-dom/php-dom.htmlhttp://tecfa.unige.ch/tecfa-people/schneider.htmlhttp://tecfa.unige.ch/guides/tie/pdf/files/js-dom.pdfhttp://tecfa.unige.ch/guides/tie/html/js-dom/js-dom.htmlhttp://tecfa.unige.ch/guides/tie/html/js-intro/js-intro.html
  • 7/25/2019 js-omfgjgj

    2/62

    Javascript et DOM - . js-dom-2

    Technologies Internet et Education TECFA 3/4/08

    Objectifs

    Survol des diffrents DOM

    HTML DOM de base (simples lectures et manipulations)

    A faire: XML-DOM, Ajax

    Source & Remerciements

    Une grande partie de ces slides est inspire par la Rfrence du DOM Gecko

    Je vous conseille galement de travailler avec ce manuel en ligne ...url: http://developer.mozilla.org/en/docs/Gecko_DOM_Reference

    url: Traduction franaise: Rfrence du DOM Gecko

    Une autre source tait les spcifications W3C et ses traductionsurl: http://www.w3.org/TR/DOM-Level-2-Core/

    url: http://www.yoyodesign.org/doc/w3c/dom2-core/Overview.html(traduction)

    url: http://www.w3.org/TR/DOM-Level-2-HTML/

    url: http://www.yoyodesign.org/doc/w3c/dom2-html/Overview.html.html (traduction)

    url: http://www.w3.org/TR/DOM-Level-2-Events/

    url: http://www.yoyodesign.org/doc/w3c/dom2-events/Overview.html.html(traduction)url: http://www.w3.org/TR/DOM-Level-2-Style/

    url: http://www.yoyodesign.org/doc/w3c/dom2-style/Overview.html(traduction)

    Flanagan, David, JavaScript, 5th edition (!), OReilly (la version 4 va plus ou moins)

    http://developer.mozilla.org/en/docs/Gecko_DOM_Referencehttp://developer.mozilla.org/en/docs/Gecko_DOM_Referencehttp://developer.mozilla.org/fr/docs/R%C3%A9f%C3%A9rence_du_DOM_Geckohttp://developer.mozilla.org/fr/docs/R%C3%A9f%C3%A9rence_du_DOM_Geckohttp://www.w3.org/TR/DOM-Level-2-Core/http://www.yoyodesign.org/doc/w3c/dom2-core/Overview.htmlhttp://www.w3.org/TR/DOM-Level-2-HTML/http://www.yoyodesign.org/doc/w3c/dom2-html/Overview.html.htmlhttp://www.w3.org/TR/DOM-Level-2-Events/http://www.yoyodesign.org/doc/w3c/dom2-events/Overview.html.htmlhttp://www.w3.org/TR/DOM-Level-2-Style/http://www.yoyodesign.org/doc/w3c/dom2-style/Overview.htmlhttp://www.yoyodesign.org/doc/w3c/dom2-style/Overview.htmlhttp://www.w3.org/TR/DOM-Level-2-Style/http://www.yoyodesign.org/doc/w3c/dom2-events/Overview.html.htmlhttp://www.w3.org/TR/DOM-Level-2-Events/http://www.yoyodesign.org/doc/w3c/dom2-html/Overview.html.htmlhttp://www.w3.org/TR/DOM-Level-2-HTML/http://www.yoyodesign.org/doc/w3c/dom2-core/Overview.htmlhttp://www.w3.org/TR/DOM-Level-2-Core/http://developer.mozilla.org/en/docs/Gecko_DOM_Referencehttp://developer.mozilla.org/fr/docs/R%C3%A9f%C3%A9rence_du_DOM_Gecko
  • 7/25/2019 js-omfgjgj

    3/62

    Javascript et DOM - 1. Table des matires dtaille js-dom-3

    Technologies Internet et Education TECFA 3/4/08

    1. Table des matires dtaille

    1. Table des matires dtaille................................................................................32. Introduction.......................................................................................................... 6

    2.1 Les DOMs du W3C 7

    2.2 Niveaux et familles DOM 8

    2.3 Implmentations 92.4 Survol des objets DOM 10

    2.5 Le rapport entre DOM et Javascript 11

    3. Elments du DOM Core et DOM HTML et ECMAScript bindings ..................... 123.1 Apperu du DOM HTML 13

    3.2 Types de donnes 15

    4. HTML Window...................................................................................................174.1 Contenu de la fentre 17

    Exemple 4-1: Quelques informations sur la fentre 184.2 Popups 19

    4.3 Fentres 20

    5. Navigator ........................................................................................................... 21Exemple 5-1: Dtection du navigateur et redirection 21Exemple 5-2: Afficher quelques proprits du navigateur 21

    6. Noeuds et lments........................................................................................... 226.1 DOM Node et DOM Element 22

    6.2 Tests 23

    6.3 Informations sur llment 23Exemple 6-1: Test si le premier noeud dun document est un commentaire 24

    6.4 Contenu dun lment 25

    6.5 Voisinage dun lment 27

    6.6 Style 27

    6.7 Attributs 28

    7. HTML Document ...............................................................................................29

  • 7/25/2019 js-omfgjgj

    4/62

    Javascript et DOM - 1. Table des matires dtaille js-dom-4

    Technologies Internet et Education TECFA 3/4/08

    7.1 Ouvrir, crire (dans) et fermer un document: 29

    7.2 Extraction dlments et dattributs 30Exemple 7-1: Extraction dlments avec leur id 30Exemple 7-2: Tree walking: Collectionner les noms dlments 32

    7.3 Cration et modification dlments 33Exemple 7-3: Cration dun lment et insertion dans le DOM 33Exemple 7-4: Cration dun lment et insertion dans le DOM 2 34

    8. HTML Attribut ....................................................................................................349. HTML Table.......................................................................................................3410. HTML Form et HTML Elements.........................................................................35

    Exemple 10-1: Interroger les valeurs dun formulaire 36Exemple 10-2: Transformer le contenu dun formulaire 38

    11. HTML Style........................................................................................................ 3911.1Modifier le style CSS " inline" 39

    Exemple 11-1: Changer dynamiquement le style dun lment 41

    Exemple 11-2: Changer dynamiquement le style (2) 41Exemple 11-3: Bouger un objet 42Exemple 11-4: Animation en continu 43Exemple 11-5: Tree walking: changer de style 44Exemple 11-6: Tree walking: changer de style 45

    11.2Utilisation de setAttribute 46

    12. HTML Event....................................................................................................... 4712.1Rappel des vnements prdfinis dans Gecko 47

    12.2Construire des Event Listeners 49A.Comme nos parents: inline 49B.Informel (marche avec IE et Firefox/Mozilla) 50Exemple 12-1: Event Listener faon rapide 50C.Selon la spcification DOM addEventListener 51Exemple 12-2: Linterface addEventListener 51

    12.3Gestion de lvnement 52

    13. AJAX ................................................................................................................. 54Exemple 13-1: AJAX request 54

  • 7/25/2019 js-omfgjgj

    5/62

    Javascript et DOM - 1. Table des matires dtaille js-dom-5

    Technologies Internet et Education TECFA 3/4/08

    Exemple 13-2: AJAX request et pseudo XML response 54Exemple 13-3: AJAX request et XML response 54

  • 7/25/2019 js-omfgjgj

    6/62

    Javascript et DOM - 2. Introduction js-dom-6

    Technologies Internet et Education TECFA 3/4/08

    2. Introduction

    Les navigateurs rcents (IE6, Moz1x, Firefox) implmentent un modle plus puissant etsurtout plus propre de ce quon avait appel "DHTML" et qui reposaient sur des technologiesnon-standardises et donc incompatibles. Voici les composantes

    1. Le langage "JavaScript", un langage de scripting "objets" et qui actuellement est formalissous lappellation "ECMAScript"

    2. Les "Document Object Models" (DOMs), qui dfinissent une srie de mthodes etproprits avec lesquelles on peut interroger et modifier nimporte quel lment dundocument HTML, XML ou encore langages XML comme SVG, X3D, etc.

    3. Et bien sr: HTML + CSS

  • 7/25/2019 js-omfgjgj

    7/62

    Javascript et DOM - 2. Introduction js-dom-7

    Technologies Internet et Education TECFA 3/4/08

    2.1 Les DOMs du W3C

    Principe

    1. Un DOM est une description structure dun document HTML ou XML.

    2. Un DOM fournit une interface cette structure et qui permet de modifier structure, contenuet style dun document XML ou HTML

    En termes techniques:

    1. Un DOM est un arbre avec des noeuds

    2. Chaque noed est un objet pour lequel il existe des mthodes et des proprits (quon peut"lire" ou modifier).

    Ces interfaces (classes, mthodes et proprits) sont implments pour plusieurs langagescomme JavaScript, PhP 5, Java, Python, Perl, ActiveX, ... Dans ce contexte, on parle de"Language bindings".

    Les noms des interfaces, classes, mthodes et proprits sont en principes les mmes danstoutes ces implmentations (ce qui facilite la vie).

    URL des spcifications:

    url: http://www.w3.org/DOM/DOMTR(liste des spcifications)

    url: http://www.w3.org/2005/11/Translations/Lists/ListLang-fr.html(liste des traductions)

    http://www.w3.org/DOM/DOMTRhttp://www.w3.org/2005/11/Translations/Lists/ListLang-fr.htmlhttp://www.w3.org/2005/11/Translations/Lists/ListLang-fr.htmlhttp://www.w3.org/DOM/DOMTR
  • 7/25/2019 js-omfgjgj

    8/62

    Javascript et DOM - 2. Introduction js-dom-8

    Technologies Internet et Education TECFA 3/4/08

    2.2 Niveaux et familles DOM

    Les spcifications W3C DOM sont organiss en "niveaux" (Angl. levels)

    Level 0 Par "level 0" on entend des implmentations varis non standardiss, comme le modle dobjets

    DHTML de Microsoft, le DOM de Netscape 4.x, etc. Certaines fonctions sont toujours indispensables comme par exemple la mthode alert()

    Level 1 (octobre 1998) DOM Level 1 Core: dfinit la navigation et la manipulation de documents HTML et XML DOM Level 1 HTML: extensions spcifiques HTML

    Level 2 (2001)

    6 spcifications, ajoute XML namespace support, filtered views and events. DOM Level 2 Core Specification (tend DOM Level 1 Core) DOM Level 2 Views Specification: DOM Level 2 Events Specification: gestion dvnements (mais pas du clavier) DOM Level 2 Style Specification: lecture et modification du CSS DOM Level 2 Traversal and Range Specification DOM Level 2 HTML Specification: extensions pour HTML

    Level 3: contient 6 spcifications DOM Level 3 Core DOM Level 3 Load and Save DOM Level 3 XPath DOM Level 3 Views and Formatting DOM Level 3 Requirements

  • 7/25/2019 js-omfgjgj

    9/62

    Javascript et DOM - 2. Introduction js-dom-9

    Technologies Internet et Education TECFA 3/4/08

    DOM Level 3 Validation

    Autre langages XML du W3C MathML SVG SMIL

    Autres langages X3D, ....

    2.3 Implmentations

    La plupart des navigateurs modernes (2005 +) offrent des implmentations assez bonnes duDOM Level 1 (mais jamais compltes) et des implmentations lacunaires de DOM Level 2(IE 7 par exemple est plutt mauvais !).

    La plupart des navigateurs implmente des extensions propritaires aux DOM 1 et 2 et quilfaut viter si possible, par exemple le "fameux" innerHTML.

    Par contre, on est oblig utiliser les implmentations propritaires de lobjet "navigator", caril nexiste pas encore de standards (mais les implmentations se ressemblent).

    Jai test la plupart des exemples avec Firefox 1.5 ou 2.x, et IE 7. Certains avec Nokia N73

    Tableaux de comparaison:

    url: Comparison of layout engines (DOM)(wikipedia)

    url: http://www.quirksmode.org/dom/w3c_html.html (Quirksmode)

    url: http://www.quirksmode.org/dom/w3c_core.html

    http://en.wikipedia.org/wiki/Comparison_of_layout_engines_%28DOM%29http://www.quirksmode.org/dom/w3c_html.htmlhttp://www.quirksmode.org/dom/w3c_core.htmlhttp://www.quirksmode.org/dom/w3c_core.htmlhttp://www.quirksmode.org/dom/w3c_html.htmlhttp://en.wikipedia.org/wiki/Comparison_of_layout_engines_%28DOM%29
  • 7/25/2019 js-omfgjgj

    10/62

    Javascript et DOM - 2. Introduction js-dom-10

    Technologies Internet et Education TECFA 3/4/08

    2.4 Survol des objets DOM

    Il existe quelques variables systme qui contiennent les objets les plus importants:

    document: accder et manipuler les contenus et styles dune page

    window: informations sur les fentre et cration de nouvelles fentres

    navigator: informations sur le navigateur (browser).

    document

    window

  • 7/25/2019 js-omfgjgj

    11/62

    Javascript et DOM - 2. Introduction js-dom-11

    Technologies Internet et Education TECFA 3/4/08

    2.5 Le rapport entre DOM et Javascript

    Voici un exemple de sensibilisation

    url: http://developer.mozilla.org/en/docs/The_DOM_and_JavaScript (source de cet exemple)

    ECMAScript (ou "core Javascript") est un langage de programmation

    Les liaisons (bindings) pour ECMAScript ajoutent linterface au DOM

    Ce qui est en rouge est DOM

    var liste_balises_a = document . getEl ementsByTagName( "a") ;f or ( var i = 0; i < liste_balises_a. l engt h ; i ++){ al er t ( "Hr ef of " + i + " - t h el ement i s : " + liste_balises_a[ i ] . hr ef + "\ n") ;

    }

    Quelques explicationsdocument . getEl ementsByTagName( "a") documentest un objet qui contient tout ce qui se trouve dans un document (page) getElementsByTagName est une mthode qui retourne une liste de noeuds (objets) de tous les

    lments ..l i s te_bal i ses_a. l engt h

    l engt hest une proprit de la classe NodeList et indique la longeur de ce type de listel i st e_bal i ses_a[ i ] . href hr efest une proprit de linterface HTMLAnchorElement et retourne le contenu de lattribut "href" Alternativement on aurait pu utiliser liste_balises_a.item(1).hrefal er t ( ) est une mthode DOM niveau 0 pour crer un petit popup (non standarde, mais implmente partout)

    http://developer.mozilla.org/en/docs/The_DOM_and_JavaScripthttp://developer.mozilla.org/en/docs/The_DOM_and_JavaScript
  • 7/25/2019 js-omfgjgj

    12/62

    Javascript et DOM - 3. Elments du DOM Core et DOM HTML et ECMAScript bindings js-dom-12

    Technologies Internet et Education TECFA 3/4/08

    3. Elments du DOM Core et DOM HTML et ECMAScript bindings

    Ce chapitre documente une partie du DOM core level 2 et DOM-HTML ainsi que leursliaisons avec ECMAScript.

    url: http://www.w3.org/TR/DOM-Level-2-Core/(W3C Recommendation 13 November, 2000)

    url: http://www.w3.org/TR/DOM-Level-2-HTML/(W3C Recommendation 09 January 2003)

    Fonction du DOM Core

    La spcification DOM niveau 2 Core se compose d'un jeu d'interfaces de base pour crer etmanipuler la structure et le contenu d'un document.

    Ce module Core contient galement des interfaces spcialises rserves XML.

    Fonction du DOM HTML La spcification DOM niveau 2 HTML dfinit une interface qui permet aux programmesl'accs et la mise jour dynamique du contenu et de la structure des documents HTML 4 etXHTML 1.x

    Rapport entre DOM Core et DOM HTML

    Le modle objet de document niveau 2 HTML repose sur le modle objet de document

    niveau 2 Core. Autrement dit DOM HTML ajoute juste des fonctionalits spcifiques HTML (il sagitsimplement de simplifier la vie pour le programmeur avec des "shortcuts"...)

    http://www.w3.org/TR/DOM-Level-2-Core/http://www.w3.org/TR/DOM-Level-2-HTML/http://www.w3.org/TR/DOM-Level-2-Core/http://www.w3.org/TR/DOM-Level-2-HTML/
  • 7/25/2019 js-omfgjgj

    13/62

    Javascript et DOM - 3. Elments du DOM Core et DOM HTML et ECMAScript bindings js-dom-13

    Technologies Internet et Education TECFA 3/4/08

    3.1 Apperu du modle objet de document Core

    Le modle DOM niveau 2 code dfinit un document XML ou HTML comme hierarchie de noeuds(node) de certains types.

    Anatomie du contenu dun arbre DOM dfini par le DOM 2 Core Interface:

    Voir aussi 3.2 Types de donnes [15]

    Type de noeuds Noeuds enfants

    Document Element (un, au maximum), ProcessingInstruction, Comment, DocumentType

    (un, au maximum)

    DocumentFragment Element, ProcessingInstruction, Comment, Text, CDATASection,

    EntityReferenceDocumentType aucun enfant

    EntityReference Element, ProcessingInstruction, Comment, Text, CDATASection,

    EntityReference

    Element Element, Text, Comment, ProcessingInstruction, CDATASection,

    EntityReferenceAttr Text, EntityReference

    ProcessingInstruction aucun enfantComment aucun enfant

    Text aucun enfantCDATASection aucun enfant

    Entity Element, ProcessingInstruction, Comment, Text, CDATASection,EntityReference

    Notation aucun enfant

  • 7/25/2019 js-omfgjgj

    14/62

    Javascript et DOM - 3. Elments du DOM Core et DOM HTML et ECMAScript bindings js-dom-14

    Technologies Internet et Education TECFA 3/4/08

    Pour chacun de ces types de noeuds il existe des mthodes et proprits pour accder auxdonnes ou pour les modifier.

    Elments supplmentaires:

    une interface NodeList pour la gestion de listes ordonnes dobjets Node

    (typiquement on a cela aprs avoir fait une requte XPath etc.) une interface NamedNodeMap pour la gestion de noeuds rfrenc par leur nom dattribut,

    DOM HTML spcialise cet arbre, c.a.d. il existe des types dobjets pour toutes sortesdlments spcifiques HTML, par exemple:

    Document devient HTMLDocument

  • 7/25/2019 js-omfgjgj

    15/62

    Javascript et DOM - 3. Elments du DOM Core et DOM HTML et ECMAScript bindings js-dom-15

    Technologies Internet et Education TECFA 3/4/08

    3.2 Types de donnes

    Tableau des types des donnes DOM Core les plus importants:

    Classes

    (Interfaces duDOM)

    variable

    ECMAScript fonction

    NodeImplmente les noeuds dun arbre DOM (par exemple document,element, attributes, etc. et qui hritent ses mthodes et proprits)

    Document documentL'objet document reprsente un document HTML, XHTML et XML(implmente linterface "Document".

    Elementelement se rfre un lment (reprsentation dune balise et de soncontenu).

    Element hrite de Node (interface pour les nuds).

    NodeList

    Une nodeList est un tableau d'lments, comme celui qui est renvoy parla mthode document.getElementsByTagName(). Les lments d'unenodeList sont accessibles par un index de deux manires diffrentes(mais identiques quand au rsultat): list.item(1) list[1]

    Attr ibute

    Une rfrence un objet qui reprsente un attribut.

    Un attribut est extension de Node.

    NamedNodeMapUne namedNodeMap est comme un tableau, mais o l'on peut accderaux lments la fois par nom ou par index

  • 7/25/2019 js-omfgjgj

    16/62

    Javascript et DOM - 3. Elments du DOM Core et DOM HTML et ECMAScript bindings js-dom-16

    Technologies Internet et Education TECFA 3/4/08

    Tableau des types de qqs. donnes du monde HTML-DOM:

    Le modle objet de document (DOM) niveau 2 HTML de plusieurs autres spcifications,notamment DOM Core

    Suite ....

    Dans la suite nous allons plutot prsenter DOM & Javascript par types dobjets (donc

    diffrents niveaux et lments de spcifications confondus).

    Classesvariable

    ECMAScriptfonction

    Window

    AbstractViewwindow

    L'objet window reprsente la fentre elle-mme.Window contient le document et le navigator parmi ses enfantsNote: Window ne fait pas partie du standard W3C !

    HTMLDocument

    Document

    documentwindow.document

    Un objet HTMLDocument reprsente la racine de la hirarchie HTML etporte la totalit du contenu. Hormis un accs la hirarchie, il offre aussides mthodes commodes pour obtenir certains ensemblesd'informations du document.

    HTMLElementElement

    Reprsente un lment HTML

    HTML...ElementIl existe des interfaces spcialises pour la plupart des lments HTML(environ 50), par exemple HTMLHeadElement, HTMLButtonElement,...

    J i t t DOM 4 HTML Wi d j d 17

  • 7/25/2019 js-omfgjgj

    17/62

    Javascript et DOM - 4. HTML Window js-dom-17

    Technologies Internet et Education TECFA 3/4/08

    4. HTML Window

    Cette interface non-standardise permet de manipuler le conteneur (fentre) dun documentHTML, ou encore de crer des fentres, popups, etc.

    Window repose sur linterface AbstractView du DOM Level 2 Views Specification

    Un standard est en discussion depuis un bon momenturl: http://www.w3.org/TR/Window/

    Note: Il existe pleins dautres proprits et mthodes que celles prsents ci-aprs

    4.1 Contenu de la fentre

    window.document

    retourne lobjet document associ une fentredoc= wi ndow. document ;/ / af f i che l e t i t r e du document cour ant dans l a consol e.wi ndow. dump( doc. t i t l e) ;

    window.navigator

    retourne une rfrence vers lobjet navigateurnav = wi ndow. navi gat or ;

    Note: lobjet navigateur vous permet ensuite de tester lenvironnement de lutilisateural er t ( "Langage de vot r e navi gat eur : " + nav. l anguage) ;Voir 5. Navigator [21]

    window.history

    J i t t DOM 4 HTML Wi d j d 18

  • 7/25/2019 js-omfgjgj

    18/62

    Javascript et DOM - 4. HTML Window js-dom-18

    Technologies Internet et Education TECFA 3/4/08

    hi st oi r e = wi ndow. hi st or y;al er t ( "Vous avez " + hi st oi r e. i t ems + " dans l hi st or i que de vot r e nav") ;

    window.status

    lit ou modifie la "status bar" (en bas de la fentre)wi ndow. st at us = " l e si t e l e pl us cool " ;

    Le code suivant montre comment changer la status bar lorsque lutilisateur glisse la souris sur un lien marche uniquement si votre Navigateur lautorise ...

    onmouseover="st atus= Consul t ezEduTechWi ki ; r et ur n t r ue; ">EduTech Wi ki

    window.print()

    envoie le contenu de la fentre sur limprimantewi ndow. pr i nt ( ) ;

    Exemple 4-1: Quelques informations sur la fentre

    url: http://tecfa.unige.ch/guides/js/ex/dom-intro/window.html

    J i t t DOM 4 HTML Wi d j d 19

    http://tecfa.unige.ch/guides/js/ex/dom-intro/window.htmlhttp://tecfa.unige.ch/guides/js/ex/dom-intro/window.html
  • 7/25/2019 js-omfgjgj

    19/62

    Javascript et DOM - 4. HTML Window js-dom-19

    Technologies Internet et Education TECFA 3/4/08

    4.2 Popups

    DOM Level 0 (pas standardis)

    window.alert(message)wi ndow. al er t ( "Hel l o t out l e monde") ;

    result = window.confirm(message);r esul t = wi ndow. conf i r m( "Voul ez- vous cr aser vot r e di sque dur ?" ) ;i f ( resul t ) al er t ( "ok c est f ai t " ) ;

    window.prompt(text, value)

    text est le message affichvalue est la valeur par dfaut ( option)r esul t = wi ndow. pr ompt ( "Quel l e est vot r e coul eur pr f r e ?" ) ;

    wi ndow. al er t ( "Ah vous ai mez l e " + r esul t ) ;

    Note:

    Ces methodes sont aussi disponibles sous forme courte, c.a.d. des fonctions:

    alert() - confirm() - prompt()

    Javascript et DOM 4 HTML Window js dom 20

  • 7/25/2019 js-omfgjgj

    20/62

    Javascript et DOM - 4. HTML Window js-dom-20

    Technologies Internet et Education TECFA 3/4/08

    4.3 Fentres

    window.open(strUrl, strWindowName [, strWindowFeatures]);

    cre une nouvelle fentre

    url: http://developer.mozilla.org/en/docs/DOM:window.open

    strUrl indique lURL de la page ouvrir. Pour obtenir une fentre vide utiliser un string vide:wi ndow. open( "" , " f enet r e vi de") ; StrWindowName: vous devez donner une nom la fentre (un string) StrWindowFeatures vous permet dindiquer une liste de proprits de la fentre

    Exemple:wi n = wi ndow. open( "ht t p: / / t ecf a. uni ge. ch/ gui des/ t i e/ t i e. ht ml ", "transparents",

    "r esi zabl e=yes, scrol l bar s=yes, st at us=yes, t ool bar =f al se") ;

    Note: rflchissez bien avant denlever la toolbar ... les gens dtestent cela.

    Attention: les features se trouven dans un seul string !!

    Javascript et DOM 5 Navigator js dom 21

  • 7/25/2019 js-omfgjgj

    21/62

    Javascript et DOM - 5. Navigator js-dom-21

    Technologies Internet et Education TECFA 3/4/08

    5. Navigator

    lobjet navigateur se trouve rfrenc dans lobjet fentre

    Il sagit de DOM level 0 .... donc pas standardis !

    nav = window.navigator

    Selon les implmentations, il existe des proprits pour identifier prcisment type denavigateur, plugins installs etc.

    Exemple 5-1: Dtection du navigateur et redirection

    url: http://tecfa.unige.ch/guides/js/ex/dom-intro/navigator.html

    Exemple 5-2: Afficher quelques proprits du navigateur

    url: http://tecfa.unige.ch/guides/js/ex/dom-intro/navigator-props.html

    Javascript et DOM 6 Noeuds et lments js dom 22

    http://tecfa.unige.ch/guides/js/ex/dom-intro/navigator.htmlhttp://tecfa.unige.ch/guides/js/ex/dom-intro/navigator-props.htmlhttp://tecfa.unige.ch/guides/js/ex/dom-intro/navigator-props.htmlhttp://tecfa.unige.ch/guides/js/ex/dom-intro/navigator.html
  • 7/25/2019 js-omfgjgj

    22/62

    Javascript et DOM - 6. Noeuds et lments js-dom-22

    Technologies Internet et Education TECFA 3/4/08

    6. Noeuds et lments

    6.1 DOM Node et DOM Element

    La plupart des objets DOM HTML hritent du DOM Core.

    Pour rappel, un aperu des types dobjets DOM universels les plus importants:

    Node

    implmente le noeud de base dans un arbre XML ou HTML

    implmente toutes les proprits et mthodes pour examiner et pour traverser un arbre

    Element et HTMLElement

    (hrite de Node) implmente les lments (donc ce qui correspond une balise et son contenu)

    implmente surtout les proprits et mthodes ncessaires pour manipuler des attributs

    Par rapport Element, HTMLElement implmente des fonctionalits supplmentaires

    Text

    (hrite de Node et de CharacterData) implmente les CDATA (texte lintrieur dune balise).

    Javascript et DOM 6 Noeuds et lments js dom 23

  • 7/25/2019 js-omfgjgj

    23/62

    Javascript et DOM - 6. Noeuds et lments js-dom-23

    Technologies Internet et Education TECFA 3/4/08

    6.2 Tests

    hasAttribute

    Returne une valeur boolenne qui indique si lattribut existe ou pas.

    hasAttributeNS

    pareil, mais pour un namespace

    hasAttributes

    Returne une valeur boolenne qui indique si llment possde des attributs.

    hasChildNodes

    Retourne une valeur boolenne qui indique si llment courant a des enfants ou non.

    6.3 Informations sur llment

    nodeName

    Retourne le nom du noeud.

    nodeType

    Retourne les type dun noeud sous forme dun nombre entier

    Ces informations sont trs importants pour savoir ce quun programme doit faire avec un noeud.

    Javascript et DOM - 6 Noeuds et lments js-dom-24

  • 7/25/2019 js-omfgjgj

    24/62

    Javascript et DOM - 6. Noeuds et lments js-dom-24

    Technologies Internet et Education TECFA 3/4/08

    Rsum des types de noeuds et leur nom sous forme de constante ou de valeur

    Exemple 6-1: Tester si le premier noeud dun document est un commentaire

    var node = document . document El ement . f i r st Chi l d;

    i f ( node. nodeType ! = Node. COMMENT_NODE) al er t ( "You shoul d comment your code wel l ! " ) ;

    Interface

    (type de noeud)Nom de la constante

    Valeur retourne

    par nodeType

    Element Node.ELEMENT_NODE 1Attr ibut Node.ATTRIBUTE_NODE 2

    Noeud texte Node.TEXT_NODE 3Node.CDATA_SECTION_NODE 4Node.ENTITY_REFERENCE_NODE 5Node.ENTITY_NODE 6

    Instruction de traitement Node.PROCESSING_INSTRUCTION_NODE 7Commentaire Node.COMMENT_NODE 8

    Node.DOCUMENT_NODE 9

    Node.DOCUMENT_TYPE_NODE 10Fragment XML Node.DOCUMENT_FRAGMENT_NODE 11

    Node.NOTATION_NODE 12

    Javascript et DOM - 6 Noeuds et lments js-dom-25

  • 7/25/2019 js-omfgjgj

    25/62

    Javascript et DOM 6. Noeuds et lments js dom 25

    Technologies Internet et Education TECFA 3/4/08

    6.4 Contenu dun lment

    childNodes

    Renvoie une liste des nuds enfants de l'lment.var col l Noeuds = el ement DeRef erence. chi l dNodes;

    className Dfinit ou obtient la classe de l'lment.

    firstChild

    Renvoie le premier enfant direct du nud.

    id

    Dfinit ou obtient l'identifiant (id) de l'lment courant.

    innerHTML (pas compatible W3C DOM !)

    Renvoie ou dfinit l'ensemble du balisage et du texte contenu au sein d'un lment donn. Balisage est une chane contenant le contenu de l'lment (y compris ses sous-lments) au format

    HTML brut. Par exemple, "

    Du texte

    ".var bal i sage = el ement . i nnerHTML;el ement . i nnerHTML = bal i sage;

    lastChild Retourne le dernier enfant dun noeud.

    NodeList.length

    Returne le nombre ditems dans une liste (e.g. childNodes).

    nodeValue

    Javascript et DOM - 6 Noeuds et lments js-dom-26

  • 7/25/2019 js-omfgjgj

    26/62

    Javascript et DOM 6. Noeuds et lments js dom 26

    Technologies Internet et Education TECFA 3/4/08

    Returne la valeur dun noeud.

    textContent

    Retourne/dfinit le contenu texte dun lment.t ext = el ement . t ext Cont entel ement . t ext Cont ent = " t hi s i s some sampl e t ext "

    appendChild(noeud)

    Insre le nud spcifi la fin de la liste de nuds de llment courant./ / Cr eat e a new par agr aph el ementvar p = document . cr eat eEl ement ( "p") ;/ / Append i t t o t he end of t he document bodydocument . body. appendChi l d(p) ;

    insertBefore (nouvel_lment, lment_cible) La mthode insertBefore permet d'insrer un nud juste avant un lment de rfrence parmi lesenfants du nud courant.parent Di v = document . get El ement ByI d( "di v- parent " ) ;span2 = document . getEl ement ByI d( "span- enf ant " ) ;span1 = document . cr eat eEl ement ( "span") ;par ent Di v. i nser t Bef or e( span1, span2) ;

    Javascript et DOM - 6. Noeuds et lments js-dom-27

  • 7/25/2019 js-omfgjgj

    27/62

    Javascript et DOM 6. Noeuds et lments js dom 27

    Technologies Internet et Education TECFA 3/4/08

    6.5 Voisinage dun lment

    parentNode

    Retourne le noeud parent.

    nextSibling

    Renvoie le nud suivant immdiatement dans l'arbre (petit frre)/ / dans un t abl eau, l es cel l ul es sont des enf ant scel l 1 = document . get El ement ByI d( " t d1") ;cel l 2 = cel l 1. next Si bl i ng;

    previousSibling

    Retourne le noeud prcdant (grande soeur).

    6.6 Style

    style

    retourne lobjet qui contient les dfinitions du style. cf. chapitre 11. HTML Style [39]

    Javascript et DOM - 6. Noeuds et lments js-dom-28

  • 7/25/2019 js-omfgjgj

    28/62

    Javascript et DOM 6. Noeuds et lments js dom 28

    Technologies Internet et Education TECFA 3/4/08

    6.7 Attributs

    attributes

    Renvoie une collection des attributs de l'lment./ / r cupr e l e pr emi er l ment

    du documentvar par a = document . get El ement sByTagName( "p") [ 0] ;/ / r cupr e ses at t r i but svar at t r = par a. at t r i but es;

    getAttribute(nom_attribut)

    Returns the value of the named attribute on the current node.var di v1 = document . getEl ement ByI d( "di v1") ;var al i gn = di v1. get At t r i but e( "al i gn") ;al er t ( al i gn) ; / / shows t he val ue of al i gn f or t he el ement wi t h i d="di v1"

    getAttributeNode()

    Returne lattribut du noeud en tant que noeud, c.f. 8. HTML Attribut [34]

    setAttribute(nom, valeur)

    Ajoute un attribut avec une valeur ou change la valeur dun attribut qui existe.

    setAttributeNode()

    Ajoute un noeud attribute llment courant.

    setAttributeNodeNS()

    Pareil, mais avec un namespace.

    Javascript et DOM - 7. HTML Document js-dom-29

  • 7/25/2019 js-omfgjgj

    29/62

    p j

    Technologies Internet et Education TECFA 3/4/08

    7. HTML Document

    Dans le DOM Core, l'objet document reprsente tout le contenu dun document

    DOM:HTMLDocument est une interface spcialise pour le traitement des documents HTML(par exemple avec document.cookie ou document.alinkColor).

    7.1 Ouvrir, crire (dans) et fermer un document:

    document.open()

    Ouvre un flux pour l'criture dans le document et qui crase tout

    document.write(balisage)

    crit du texte dans le document.

    document.close()

    Un document ouvert peut tre ferm l'aide de document.close().document . open( ) ; / / ouvr e un documentdocument . wr i t e( "Hel l o ! ") ;document . cl ose( ) ;

    Javascript et DOM - 7. HTML Document js-dom-30

  • 7/25/2019 js-omfgjgj

    30/62

    p j

    Technologies Internet et Education TECFA 3/4/08

    7.2 Extraction dlments et dattributs

    document.getElementById(id_lment)

    Renvoie une rfrence l'objet correspondant l'identifiant donn. Il sagit ici dune mthode trs populaire !

    document . getEl ement ByI d( "p1" )

    document.getElementsByName(nom_lment)

    Renvoie une liste des lments ayant le nom donn./ / 200/ / 145/ / 178up_di vs = document . get El ement sByName("up") ; / / r etour ne une l i st e de nodesdump( up_di vs. i t em( 0) . t agName) ; / / r et ur ns " di v"

    document.getElementsByTagName(nom_balises)

    Renvoie une liste des lments avec le nom de balise donn dans le documentel ement s = document . getEl ement sByTagName(h1) ; / / r etour ne une l i st e des h1

    Exemple 7-1: Extract ion d lments avec leur id

    / / pour

    t ext e

    premi erPar agr aphe = document . get El ement ByI d( "p1" ) ;l i st eAt t r i but s = pr emi er Par agr aphe. at t r i but es;

    Javascript et DOM - 7. HTML Document js-dom-31

  • 7/25/2019 js-omfgjgj

    31/62

    p j

    Technologies Internet et Education TECFA 3/4/08

    Quelques propr its:

    il existe plusieurs proprits pour extraire qqs. lments spcifiques, par ex.

    document.forms

    forms renvoie une liste des lments FORM du document courant

    document.body body renvoie le nud BODY du document.

    document.links

    Renvoie un tableau de tous les liens du document.

    document.referrer

    Renvoie l'URI de la page qui a amen cette page.

    document.images

    images renvoie une liste des images du document.var l i st ei mg = document . i mages;f or ( var i = 0; i < l i st ei mg. l engt h; i ++) { i f ( l i stei mg[ i ] == "xxx. gi f " ) { al ert ( "At t ent i on aux noms d i mages"! ) }}

    Javascript et DOM - 7. HTML Document js-dom-32

  • 7/25/2019 js-omfgjgj

    32/62

    Technologies Internet et Education TECFA 3/4/08

    Exemple 7-2: Tree walking: Collectionner les noms dlments

    url: http://tecfa.unige.ch/guides/js/ex/tree-walking/tree-walking.html

    var node_l i st = "" ;

    f unct i on do_document ( ) {

    mark_t ags( document . body) ; al er t ( "Thi s t ext has t he f ol l owi ng el ement s: " + node_l i st ) ; }

    f unct i on mar k_t ags( node) {/ / Check i f n i s an El ement Node

    i f ( node. nodeType == 1 / *Node. ELEMENT_NODE*/ ) {

    / / Append t he node name to t he l i stnode_l i st += node. nodeName + " " ;/ / Let ' s see i f t her e ar e chi l dr eni f ( node. hasChi l dNodes( ) ) { / / Now get al l chi l dr en of n var chi l dr en = node. chi l dNodes;

    / / Loop t hr ough t he chi l dr en f or ( var i =0; i < chi l dr en. l engt h; i ++) {

    mar k_t ags( chi l dr en[ i ] ) ; / / Recur se on each one }} } }

    Tr ee wal ki ng

    Javascript et DOM - 7. HTML Document js-dom-33

    http://tecfa.unige.ch/guides/js/ex/tree-walking/tree-walking.htmlhttp://tecfa.unige.ch/guides/js/ex/tree-walking/tree-walking.html
  • 7/25/2019 js-omfgjgj

    33/62

    Technologies Internet et Education TECFA 3/4/08

    7.3 Cration et modification dlments

    document.createElement (nom_du_tag)

    Cre un nouvel lment.var di v = document . cr eat eEl ement ( "di v") ;

    document.createTextNode (texte) Cre un nud de texte.

    parent_node.insertBefore(new_node, existing_node)

    insre un (nouveau) lment avant un autre lmentpr ef ace. i nser t Bef or e( new_di v_node, t i t r e)

    Exemple 7-3: Cration dun lment et insertion dans le DOM

    url: http://tecfa.unige.ch/guides/js/ex/dom-intro/document-trans1.htmlf unct i on change_me( ) { var doc = wi ndow. document ; var pr ef ace = doc. getEl ement ByI d( "pr ef ace" ) ; var t i t r e = doc. get El ement ByI d( "pref ace_t i t l e") ;

    / / on cr ee un l ment di v var new_di v_node = doc.createElement("div");

    / / on cr ee un nouveau TextNode var cont enu = doc.createTextNode ( "Aut eur : DKS et col l abor at eur s") ; / / on l e met dans l e di v new_di v_node. appendChi l d( cont enu) ;

    / / et on i nser e ce di v devant l ' l ment qui a l ' I D "pref ace" pr ef ace. insertBefore(new_div_node, titre);

    Javascript et DOM - 8. HTML Attribut js-dom-34

    http://tecfa.unige.ch/guides/js/ex/dom-intro/document-trans1.htmlhttp://tecfa.unige.ch/guides/js/ex/dom-intro/document-trans1.html
  • 7/25/2019 js-omfgjgj

    34/62

    Technologies Internet et Education TECFA 3/4/08

    }. . . . .

    Voici le fragment HTML:

    La pr f ace

    bl abl a ( qui a cri t cel a ?)

    Transf ormez- moi !

    Exemple 7-4: Cration dun lment et insertion dans le DOM 2

    Voici 2 exemples similaires

    url: http://tecfa.unige.ch/guides/js/ex/dom-intro/insert3.html

    url: http://tecfa.unige.ch/guides/js/ex/dom-intro/insert4.html

    8. HTML Attribut

    ( faire)

    9. HTML Table

    ( faire)

    Javascript et DOM - 10. HTML Form et HTML Elements js-dom-35

    http://tecfa.unige.ch/guides/js/ex/dom-intro/insert3.htmlhttp://tecfa.unige.ch/guides/js/ex/dom-intro/insert3.html
  • 7/25/2019 js-omfgjgj

    35/62

    Technologies Internet et Education TECFA 3/4/08

    10.HTML Form et HTML Elements

    url: http://developer.mozilla.org/en/docs/DOM:form

    HTMLFormElement hrite de Element (donc de ses mthodes et proprits)

    Ci-dessous on utilise "form" et "element"

    form.elementsnodeLi st = f orm. el ement s

    retourne un tableau (array) de toutes les "contrles" (balises pour formulaire) dun formulaire

    form.length

    indique le nombre des contrles (utile pour programmer une boucle) nodeList = HTMLFormElement.elements

    Accs aux lments

    soit par leur indexe, soit par leur id ou leur name.

    Accs par idvar i nput s = document . get El ement ByI d( " f orm1" ) . el ement s;

    Accs par indexevar i nput ByI ndex = i nput s[ 2] ;

    Accs par nomvar i nput ByName = i nput s[ " l ogi n" ] ;

    Javascript et DOM - 10. HTML Form et HTML Elements js-dom-36

    http://developer.mozilla.org/en/docs/DOM:formhttp://developer.mozilla.org/en/docs/DOM:formhttp://developer.mozilla.org/en/docs/DOM:form
  • 7/25/2019 js-omfgjgj

    36/62

    Technologies Internet et Education TECFA 3/4/08

    Exemple 10-1: Interroger les valeurs dun formulaire

    url: http://tecfa.unige.ch/guides/js/ex/forms/form2.html

    Cette fonction traite le formulaire form = document.intoxication// assigne une rfrence du formulaire form la boucle additionne form.elements[i].value partir du 2me lment !

    f unct i on t rai t er( ) { var scal e=0; var f or m = document . i nt oxi cat i on f or ( var i =1; i < ( f or m. l engt h- 1) ; i ++) { i f ( f or m. el ement s[ i ] . checked) {

    scal e = scal e + par seI nt ( f or m. el ement s[ i ] . val ue) ; }

    } // Ici une series de ifs (c.f. le source)

    i f ( scal e

  • 7/25/2019 js-omfgjgj

    37/62

    Technologies Internet et Education TECFA 3/4/08

    I nt er act i ve t est

    Quel est t on nom ?

    Vous buvez de l ' al cool :j amai smoi ns d' un l i t r e par semai nepl us d' un l i t r e par semai ne

    Quand vous buvez de l ' al cool , vous f i ni ssez vot r e ver r e :j amai spar f oi st ouj our s

    [ . . . . . ]

    Javascript et DOM - 10. HTML Form et HTML Elements js-dom-38

  • 7/25/2019 js-omfgjgj

    38/62

    Technologies Internet et Education TECFA 3/4/08

    Exemple 10-2: Transformer le contenu dun formulaire

    url: http://tecfa.unige.ch/guides/js/ex/forms/form1.html

    Cette fonction ramasse qqs. informations sur le formulaire et les affiche dans le contenu de la textarea.

    f unct i on get For mI nf o( ) { var f = document.forms["myform"] ;

    var i nf o = " f . el ement s: " + f . el ement s + " \ n" + "f . l engt h: " + f . l engt h + "\ n" + " f . name: " + f . name + " \ n" + "f . acti on: " + f . act i on + "\ n" + " f . method: " + f . method + " \ n" + "f . t ar get : " + f . t ar get ; document . f or ms[ "myf orm"] . el ement s[ ' t ex' ] . val ue = i nf o;

    }Cette fonction modifie le formulaire

    f unct i on set For mI nf o( f ) { f . met hod = "GET"; f . act i on = "Envoi _ver s_python" ; f . name = "Voi ci _un_nom_qui _j et t e" ; }. . . . .

    Javascript et DOM - 11. HTML Style js-dom-39

    http://tecfa.unige.ch/guides/js/ex/forms/form1.htmlhttp://tecfa.unige.ch/guides/js/ex/forms/form1.html
  • 7/25/2019 js-omfgjgj

    39/62

    Technologies Internet et Education TECFA 3/4/08

    11.HTML Style

    Il est possible daccder et de modifier la feuille de style du document le rsultat combin des styles en cascade pour un lment le style "inline" pour un lment dfini

    11.1Modifier le style CSS " inl ine"

    Dans cette section on montre comment changer le style "inline" dun lment individuel.

    En rgle gnrale, on utilise cette technique pour faire des pages interactives et/ou anims.

    Le principe est simple, pour accer ou modifier une proprit CSS on passe par:

    element.style.propriete_CSS

    / / supposons que para12 soi t un l ment pr ci s de vot r e DOMpar a12. st yl e. col or = "bl ue"par a12. st yl e. f ont Si ze = "18pt "

    Liste des proprits DOM CSS

    Attention (!!!) Les proprits CSS du DOM ne correspondent pas aux noms "CSS"

    Pour une liste, cf:url: http://developer.mozilla.org/en/docs/DOM:CSS

    url: http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSS2Properties

    Javascript et DOM - 11. HTML Style js-dom-40

    http://developer.mozilla.org/en/docs/DOM:CSShttp://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSS2Propertieshttp://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSS2Propertieshttp://developer.mozilla.org/en/docs/DOM:CSS
  • 7/25/2019 js-omfgjgj

    40/62

    Technologies Internet et Education TECFA 3/4/08

    En gros, on peut deviner le nom DOM: il faut enlever le tiret "-" il faut capitaliser les mots (sauf le premier) par exemple: la proprit CSS "background-color" devenient en DOM CSS "backgroundColor".

    Voici juste quelques exemples:

    DOM CSS Proprit CSSbackground background

    backgroundColor background-colorborderColor border-color

    fontFamily font-familyfontSize font-size

    marginBottom margin-bottom

    marginLeft margin-left

    Javascript et DOM - 11. HTML Style js-dom-41

  • 7/25/2019 js-omfgjgj

    41/62

    Technologies Internet et Education TECFA 3/4/08

    Exemple 11-1: Changer dynamiquement le style dun lment

    url: http://tecfa.unige.ch/guides/js/ex/dom-intro/change-style1.html

    montre comment changer le style dun lien spcifique f unct i on changeText ( ) {

    var p = document . get El ement ByI d( "pi d" ) ;p. st yl e. col or = "bl ue"p. st yl e. f ont Si ze = "18pt "

    } . . . . .

    News Li nk

    Exemple 11-2: Changer dynamiquement le style (2)

    url: http://tecfa.unige.ch/guides/js/ex/dom-intro/change_style2.html

    montre comment changer entre 2 styles pour un lien spcifique

    Javascript et DOM - 11. HTML Style js-dom-42

    http://tecfa.unige.ch/guides/js/ex/dom-intro/change-style1.htmlhttp://tecfa.unige.ch/guides/js/ex/dom-intro/change_style2.htmlhttp://tecfa.unige.ch/guides/js/ex/dom-intro/change_style2.htmlhttp://tecfa.unige.ch/guides/js/ex/dom-intro/change-style1.html
  • 7/25/2019 js-omfgjgj

    42/62

    Technologies Internet et Education TECFA 3/4/08

    Exemple 11-3: Bouger un objet

    url: http://tecfa.unige.ch/guides/js/ex/dom-animate/move-object1.html

    f unct i on movei t By( i mg, x, y){ var obj = document . get El ement ByI d( i mg) ; obj.style.left = parseInt(obj.style.left)+x+"px"

    obj.style.top = par seI nt ( obj . st yl e. t op) +y+"px" } f unct i on movei t To( i mg, x, y){ var obj = document . get El ement ByI d( i mg) ; obj.style.left = x+"px" obj.style.top = y+"px" } la fonction parseInt () va extraire un nombre dun string partir des premires chiffres (!)parseI nt ( "10px") == 10; parseI nt ( "10bl a20") == 10; pareI nt ( "px10") == NaN;

    Voici la partie HTML

    Move by 10px ( r i ght ) Move by 10px ( l ef t ) Move t o 10px ( down) Move t o 10px (up) Move t o or i gi nal posi t i on

    Javascript et DOM - 11. HTML Style js-dom-43

    http://tecfa.unige.ch/guides/js/ex/dom-animate/move-object1.htmlhttp://tecfa.unige.ch/guides/js/ex/dom-animate/move-object1.html
  • 7/25/2019 js-omfgjgj

    43/62

    Technologies Internet et Education TECFA 3/4/08

    Exemple 11-4: Animation en cont inu

    url: http://tecfa.unige.ch/guides/js/ex/dom-animate/dynamicposition2.html

    Une fonction start va toutes les 100 millisecondes lancer la fonction "run".f unct i on star t ( ) { pText = document . get El ement ByI d( "pText " ) ;

    t i mer = wi ndow. set I nt er val ( "r un( ) ", 100 ) ; }

    La mthode window.clearInterval(timer) permet de tuer ce processus

    La fonction run() fait lanimation. . . . . pText . st yl e. f ont Si ze = si ze + "px"; pText . st yl e. l ef t = count + "px" ;

    Une expression teste dans quel sens il faut aller (aggrandir ou diminuer)i f ( ( count % 200 ) == 0 ) { speed *= - 1; pText . st yl e. col or = ( speed < 0 ) ? " r ed" : " bl ue" ; f i r st Li ne = ( speed < 0 ) ? "Text shr i nki ng" : "Text gr owi ng" ; }

    Javascript et DOM - 11. HTML Style js-dom-44

    http://tecfa.unige.ch/guides/js/ex/dom-animate/dynamicposition2.htmlhttp://tecfa.unige.ch/guides/js/ex/dom-animate/dynamicposition2.htmlhttp://tecfa.unige.ch/guides/js/ex/dom-animate/dynamicposition2.html
  • 7/25/2019 js-omfgjgj

    44/62

    Technologies Internet et Education TECFA 3/4/08

    Exemple 11-5: Tree walking: changer de style

    url: http://tecfa.unige.ch/guides/js/ex/tree-walking/tree-walking2.html

    f unct i on do_document ( css_cl ass, col or ) {

    mar k_t ags( document . body, css_cl ass, col or) ; }

    f unct i on mar k_t ags( node, css_cl ass, col or ) {/ / Check i f n i s an El ement Node

    i f ( node. nodeType == 1 / *Node. ELEMENT_NODE*/ ) {/ / Hi ghl i ght i f needed

    i f ( node. get At t r i but e( "cl ass") == css_cl ass) node. st yl e. col or = col or ;

    / / Let ' s see i f t her e ar e chi l dr eni f ( node. hasChi l dNodes( ) ) { / / Now get al l chi l dr en of node var chi l dr en = node. chi l dNodes;

    / / Loop t hr ough t he chi l dr en f or ( var i =0; i < chi l dr en. l engt h; i ++) {

    / / Recur se on each chi l d mar k_t ags( chi l dr en[ i ] , css_cl ass, col or ) ;

    } }}}

    Javascript et DOM - 11. HTML Style js-dom-45

    http://tecfa.unige.ch/guides/js/ex/tree-walking/tree-walking2.htmlhttp://tecfa.unige.ch/guides/js/ex/tree-walking/tree-walking2.html
  • 7/25/2019 js-omfgjgj

    45/62

    Technologies Internet et Education TECFA 3/4/08

    Tr ee wal ki ng . . . . .

    Let ' s hope you enj oy t hi s

    I f you want t o r euse t hi s code: . . . . .

    Exemple 11-6: Tree walking: changer de style

    url: http://tecfa.unige.ch/guides/js/ex/tree-walking/tree-walking3.html Code plus gnral que tree-walkin2.html et qui permet de transformer nimporte quelle

    proprite de style

    Javascript et DOM - 11. HTML Style js-dom-46

    http://tecfa.unige.ch/guides/js/ex/tree-walking/tree-walking3.htmlhttp://tecfa.unige.ch/guides/js/ex/tree-walking/tree-walking3.html
  • 7/25/2019 js-omfgjgj

    46/62

    Technologies Internet et Education TECFA 3/4/08

    11.2Utilisation de setAttribute

    element.setAttribute("style,"dfinition CSS .....")

    on peut aussi directement (re)dfinir la proprit "style" dun lment et l on travaille directement avecCSS.

    Mais attention: cette opration crase tous les autres styles inline associs cet lment ( vrifier si

    cela comprend les styles hrits, sorry !). A utiliser avec prudence en tout cas.var el = document . getEl ement ByI d( "some- el ement " ) ;el . set At t r i but e( "st yl e", "backgr ound- col or : dar kbl ue; ") ;

    Javascript et DOM - 12. HTML Event js-dom-47

  • 7/25/2019 js-omfgjgj

    47/62

    Technologies Internet et Education TECFA 3/4/08

    12.HTML Event

    HTML fournit une interface trs puissante pour grer les vnements

    La diffrence entre "Event listener", "Event handler" et "Event". Un "Event listener" observe si un vnement a lieu Un "Event handler" fait quelque chose avec lvnement

    Un "Event" est un vnement (lutilisateur a fait qc. et cela se traduit en un objet de type Event)

    12.1Rappel des vnements prdfinis dans Gecko

    Dom Event Level 2 en dfinit moins (les keys) !url: http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-eventgroupings

    Voici un tableau avec quelques vnments importants pour les objets de type HTML

    Element et Window.

    Event Handler Event element window Utilisateur

    onblur blur x xon focalise sur un autre objet(bouger, cliquer, etc ailleurs )

    onclick click x x on clique sur un objetondblclick dblclick x

    onfocus focus x x on focalise sur lobjetonkeydown keydown x x une touche reste enfonceonkeypress keypress x x une touche est enfonce

    onkeyup keyup x xonmousedown mousedown x x clique avec la sourceonmousemove mousemove x x on bouche la souris

    Javascript et DOM - 12. HTML Event js-dom-48

    http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-eventgroupingshttp://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-eventgroupings
  • 7/25/2019 js-omfgjgj

    48/62

    Technologies Internet et Education TECFA 3/4/08

    Principe

    Lorsquon a une instruction HMTL/JS suivante:cl i ck me!

    Dans le DOM une proprit reprsente cela:cl i ck me! mon_el = document . get El ement ByI d( "mon_di v") ;mon_el . oncl i ck / / r et our ne l e nom de l a f onct i on qui gr e l e oncl i ck

    par dfaut, la valeur DOM demon_el.onclick est une fonction "Event Listener" prdfinie:f unct i on oncl i ck( event ) { t r ai t ement ( ) ; }

    Les noms des Event listeners sont dfinis dans les proprits de lobjet (onload, onclose, etc.) Lors dune invocation, ces fonctions reoivent comme argument un objet "Event" quon peut exploiter.

    onmouseout mouseout x x on dplace la souris ailleursonmouseover mouseover x x on dplace la souris sur lobjet

    onmouseup mouseup x x on lache un bout de sourisonresize resize x x on diminue une fenetre

    onload load x on charge une fentre dans les navi.

    onunload unload contenu part(on charge un autre document)

    onclose close x on ferme une fentreondragdrop dragdrop x

    onscroll scroll x on scroll le contenu dune fentre

    Event Handler Event element window Utilisateur

    Javascript et DOM - 12. HTML Event js-dom-49

    12 2C t i d E t Li t

  • 7/25/2019 js-omfgjgj

    49/62

    Technologies Internet et Education TECFA 3/4/08

    12.2Construire des Event Listeners

    Pour assigner des Event Listeners, il existe 3 faons de faire:

    A. Comme nos parents: inline

    A viter car on mlange HTML et Javascript

    A viter car (en tout cas moi je ne sais passer lobjet "vnment"), c.f. page 52url: http://tecfa.unige.ch/guides/js/ex/dom-event/simple-event-listener0.html

    f unct i on showPopup( ) { al ert ( "At t ent i on on va vous empest er avec une pub ! ! " ) ; var popup = wi ndow. open( "ht t p: / / t ecf a. uni ge. ch/ mal t t / " , "popup" ,

    "hei ght=800, wi dt h=600") ; popup. f ocus( ) ; r et ur n f al se; } CLI CK ME ! !

    On dclenche un vent "click" en cliquant sur le texte "CLICK ME" Le Event Listener "onClick" va faire appel la fonction Event Handler "showPopup".

    Javascript et DOM - 12. HTML Event js-dom-50

    B I f l ( h IE t Fi f /M ill )

    http://tecfa.unige.ch/guides/js/ex/dom-event/simple-event-listener0.htmlhttp://tecfa.unige.ch/guides/js/ex/dom-event/simple-event-listener0.html
  • 7/25/2019 js-omfgjgj

    50/62

    Technologies Internet et Education TECFA 3/4/08

    B. Informel (marche avec IE et Firefox/Mozilla)

    Exemple 12-1: Event Listener faon rapide

    url: http://tecfa.unige.ch/guides/js/ex/dom-event/simple-event-listener.html

    f unct i on l oad( ) {

    varp = document.getElementById( ' mon_div

    ' ) ; p.onclick = showPopup; // Il sagit de donner le NOM de la fonction }

    f unct i on showPopup() { al er t ( "At t ent i on on va vous empest er avec une pub ! ! " ) ; var popup = wi ndow. open( "ht t p: / / t ecf a. uni ge. ch/ mal t t / " , "popup" , "hei ght=800, wi dt h=600") ;

    popup. f ocus( ) ; r et ur n f al se; }. . . . .CLI CK ME ! !

    Lorsque le document charge, on assigne le nom de la fonction showPopup la proprit

    "onclick" de llment en question (le "div" du CLICK ME). Ensuite, la fonction showPopup grer lvnement vous voulez ...

    Javascript et DOM - 12. HTML Event js-dom-51

    C S l l ifi ti DOM ddE tLi t

    http://tecfa.unige.ch/guides/js/ex/dom-event/simple-event-listener.htmlhttp://tecfa.unige.ch/guides/js/ex/dom-event/simple-event-listener.html
  • 7/25/2019 js-omfgjgj

    51/62

    Technologies Internet et Education TECFA 3/4/08

    C. Selon la spcification DOM addEventListener

    Cette mthode est plus puissante puisquelle permet denregistrer plusieurs Event Listenersdu mme type.

    Ne marche pas avec IE 6 (4/2006), MS a son truc propritaire quivalent.

    Exemple 12-2: Linterface addEventListenerurl: http://tecfa.unige.ch/guides/js/ex/dom-event/addEventListener2.html

    / / Exempl e 1 d' enr egi st r ement d' vnement f unct i on l_func() { var t 2 = document . getEl ement ByI d( " t 2" ) ; t 2. i nner HTML = " t r oi s c' est mi eux que deux ! " ;

    }

    / / Exempl e 2 d' enr egi st r ement d' vnement f unct i on touche ( ) { al er t ( " j e t ' ai vu t oucher ! ! ") ; document . get El ement ByI d( " t abl e2") . st yl e. bor der = "yel l ow" ; }

    f unct i on l oad( ) {var el = document . get El ement ByI d( " t abl e" ) ;el.addEventListener("click", l_func, false);

    var el 2 = document . getEl ement ByI d( " t abl e2" ) ;el2.addEventListener("mouseover", touche, false);

    }

    Javascript et DOM - 12. HTML Event js-dom-52

    12 3G ti d l t

    http://tecfa.unige.ch/guides/js/ex/dom-event/addEventListener2.htmlhttp://tecfa.unige.ch/guides/js/ex/dom-event/addEventListener2.html
  • 7/25/2019 js-omfgjgj

    52/62

    Technologies Internet et Education TECFA 3/4/08

    12.3Gestion de lvnement

    Lorsquun vent handler fait appel une fonction, le handler lui transmet un objet "Event".Cet objet possde des informations utiles quon peut exploiterurl: http://tecfa.unige.ch/guides/js/ex/dom-event/examine-events2.html

    A documenter ...var x_t d; var y_t d;

    / / Exempl e d' enr egi st r ement d' vnement f unct i on t ouche ( event ) {

    x = event . pageX; y = event . pageY;

    obj = event . t ar get ; / / al er t ( "j e t ' ai vu t oucher \ n aux posi t i ons x=" + x + ", y=" + y + "\ n l \ ' obj et" + obj ) ; x_t d. i nner HTML = x; y_t d. i nner HTML = y; obj _t d. i nnerHTML = obj . i nnerHTML; }

    f unct i on l oad( ) {var el 2 = document . getEl ement ByI d( " t abl e2" ) ;i f ( el 2. addEvent Li st ener ) el 2. addEvent Li st ener ( "mouseover ", t ouche, f al se)

    / / f or t hose who can' t use a r eal br owser el se al ert ( "Sorr y you need a br owser t hat unders t ands DOM Level 2 Event s" ) ; x_t d = document . getEl ement ByI d( "x") ;

    y_t d = document . getEl ement ByI d( "y") ;

    Javascript et DOM - 12. HTML Event js-dom-53

    obj t d document getEl ement ByI d( "obj " ) ;

    http://tecfa.unige.ch/guides/js/ex/dom-event/examine-events2.htmlhttp://tecfa.unige.ch/guides/js/ex/dom-event/examine-events2.html
  • 7/25/2019 js-omfgjgj

    53/62

    Technologies Internet et Education TECFA 3/4/08

    obj _t d = document . getEl ement ByI d( "obj " ) ;}

    Gecko DOM addEvent Li st ener exampl e

    Ceci est une dmo d' un Event Handl er pour l ' vnement mouseover enr egi st r pour l a tabl e.Bougez l a sour i s sur l e tabl eau SVP:

    Ma t et eMa poi t r i neMon vent r eMes j ambes

    Tu a commenc me t oucher aux coor donnes:

    X = Y = Obj et =

    Javascript et DOM - 13. AJAX js-dom-54

    13 AJAX

  • 7/25/2019 js-omfgjgj

    54/62

    Technologies Internet et Education TECFA 3/4/08

    13.AJAX

    Explications faire, pour le moment c.f. autres sites, par exemple:url: http://developer.mozilla.org/en/docs/AJAX

    Asynchronous JavaScript and XML (AJAX) is not a technology in itself, but is a term that describes a"new" approach to using a number of existing technologies together, including: HTML or XHTML,

    Cascading Style Sheets, JavaScript, The Document Object Model, XML, XSLT, and theXMLHttpRequest object.

    Exemple 13-1: AJAX request

    url: http://tecfa.unige.ch/guides/js/ex/ajax/ajax0.html

    Montre comment demander une page (GET) dont le contenu sera affich dans un alert

    Exemple 13-2: AJAX request et pseudo XML responseurl: http://tecfa.unige.ch/guides/js/ex/ajax/ajax1.html

    url: http://tecfa.unige.ch/guides/js/ex/ajax/ajax1.phps

    Montre comment envoyer une requte au serveur

    Cette requte est construite partir dun geste dutilisateur

    On affiche la rponse XML "texte" du serveur dans une fentre popup (sans la traiter)

    Exemple 13-3: AJAX request et XML response

    url: http://tecfa.unige.ch/guides/js/ex/ajax/ajax2.htmlOn analyse les rponses du serveur en tant que XML DOM en utilisant lAPI DOM Core

    Ensuite, on insre quelque chose dans la page HTML

    Javascript et DOM - 13. AJAX js-dom-55

    Documentation incluse dans le code (en Anglais)

    http://tecfa.unige.ch/guides/js/ex/ajax/ajax0.htmlhttp://tecfa.unige.ch/guides/js/ex/ajax/ajax1.htmlhttp://tecfa.unige.ch/guides/js/ex/ajax/ajax1.phpshttp://tecfa.unige.ch/guides/js/ex/ajax/ajax2.htmlhttp://tecfa.unige.ch/guides/js/ex/ajax/ajax2.htmlhttp://tecfa.unige.ch/guides/js/ex/ajax/ajax1.phpshttp://tecfa.unige.ch/guides/js/ex/ajax/ajax1.htmlhttp://tecfa.unige.ch/guides/js/ex/ajax/ajax0.html
  • 7/25/2019 js-omfgjgj

    55/62

    Technologies Internet et Education TECFA 3/4/08

    Documentation incluse dans le code (en Anglais)

    Code HTML et JavaScript Si mpl e Aj ax exampl evar ur l ;var t abl e;

    f unct i on i ni t ( ) { ur l = "aj ax1. php"; / / ur l = "aj ax- debug. php"; t abl e = document . getEl ement ByI d( " t abl e1" ) ;

    }

    f unct i on makeRequest ( el ement ) { / / Thi s f unct i on i s cal l ed f r om t he HTML code bel ow / / el ement i s t he DOM el ement ( t ag on whi ch t he user cl i cked)

    var ht t p_r equest = f al se;

    / / - - - - Moz i l l a, Saf ar i , et c. browsers

    i f ( wi ndow. XMLHt t pRequest ) {ht t p_r equest = new XMLHt t pRequest ( ) ;

    / / Thi s wi l l make sure t hat t he server r esponse cl ai ms t o be XML ( i n case we r et r i evesomethi ng el se) i f ( ht t p_r equest . over r i deMi meType) { ht t p_r equest . over r i deMi meType( ' t ext / xml ' ) ; }

    Javascript et DOM - 13. AJAX js-dom-56

    / / I E browsers

  • 7/25/2019 js-omfgjgj

    56/62

    Technologies Internet et Education TECFA 3/4/08

    / / - - - - I E browsers } el se i f ( wi ndow. Act i veXObj ect ) {

    try { ht t p_r equest = new Act i veXObj ect ( "Msxml 2. XMLHTTP") ; } cat ch ( e) { t ry { ht t p_r equest = new Act i veXObj ect ( "Mi cr osof t . XMLHTTP") ;

    } cat ch ( e) {} } }

    / / - - - - abor t i f t here i s no repl y i f ( ! ht t p_request) { al er t ( ' Gi vi ng up : ( Cannot creat e an XMLHTTP i nst ance' ) ; r et ur n f al se; }

    / / We r egi st er t he f unct i on t hat wi l l deal wi t h a r epl y ht t p_r equest . onr eadystat echange = f unct i on( ) { pr ocessSer ver Repl y(ht t p_r equest ) ; };

    / / Thi s l i nes st ar t s bui l di ng t he request - don' t t hi nk that a GET r equest woul d wor k ( ?) ht t p_r equest . open( ' POST' , ur l , t r ue) ; / / Cont ent s WE send f r omhere wi l l be ur l encoded ht t p_r equest . setRequest Header ( ' Cont ent - Type' , ' appl i cat i on/ x- www- f or m- ur l encoded' ) ;

    / / her e we extr act t he cont ent s of t ag on whi ch t he user cl i cked user_pr ef = el ement . i nnerHTML; / / Thi s i s the cont ent of t he r equest / / al er t ( user_pref ) ; user_ r equest = "user _pr ef _f r ui t =" + user_pr ef ;

    Javascript et DOM - 13. AJAX js-dom-57

    / / We send t he data - data are query st r i ngs

  • 7/25/2019 js-omfgjgj

    57/62

    Technologies Internet et Education TECFA 3/4/08

    / / We send t he data - data are query st r i ngs ht t p_r equest . send( user_ r equest ) ;}

    f unct i on pr ocessSer ver Repl y(ht t p_r equest ) {

    i f ( ht t p_r equest . r eadySt at e == 4) {

    i f ( ht t p_r equest . st at us == 200) { / / We t el l t he ser ver t hat we want t o deal wi t h XML as a DOM Document ! ! r epl yXML = ht t p_r equest . r esponseXML; t r eat Response ( r epl yXML) ; / / di spl ayResponse ( r epl yXML) ; } el se { al er t ( ' Ther e was a pr obl em wi t h t he r equest . ' ) ; } }}

    / / Thi s wi l l change the HTML cont ent s of t he pagef unct i on tr eat Response ( r epl y) { / / r epl y i s a XML DOM dat ast r uct ur e ! ! / / ext r act some XML - we know t hat i t i s i n an "answer " t ag / / DOM HTML wi l l not wor k, i t ' s XML her e

    var answer = r epl y. getEl ement sByTagName( ' answer' ) . i t em( 0) . f i r st Chi l d. nodeVal ue;

    / / new t r , t d el ement s var el ement _t r = document . cr eat eEl ement ( " t r " ) ; var el ement _t d = document . cr eat eEl ement ( " t d" ) ; / / cont ent s f or t he t d el ement var t ext = document . cr eat eTextNode( answer ) ; el ement _t d. appendChi l d( t ext ) ;

    Javascript et DOM - 13. AJAX js-dom-58

    el ement t r appendChi l d( el ement t d) ;

  • 7/25/2019 js-omfgjgj

    58/62

    Technologies Internet et Education TECFA 3/4/08

    el ement _t r . appendChi l d( el ement _t d) ; tabl e. appendChi l d( el ement _t r ) ;}

    / / j ust f or debuggi ng, wi l l open up a popup wi ndow. Usef ul i f you t el l t he php t o senddebuggi ng i nf os. . .f unct i on di spl ayResponse ( r epl y) {

    wi n=wi ndow. open( "" , "Resul t s" , "wi dt h=250, hei ght =300, st atus=1, r esi zabl e=1, scr ol l bars=1"); wi n. document . open( ) ; wi n. document . wr i t e( r epl y) ; wi n. document . cl ose( ) ;}

    Si mpl e Aj ax exampl e

    Pl ease cl i ck on a f r ui t :

    I l i ke

    appl es

    I l i ke

    Javascript et DOM - 13. AJAX js-dom-59

  • 7/25/2019 js-omfgjgj

    59/62

    Technologies Internet et Education TECFA 3/4/08

    or anges

    I l i ke

    bananas

    Di al og hi st or y:

    Server r epl i es

    Expl anat i ons:

    Javascript et DOM - 13. AJAX js-dom-60

    Thi s exampl e i s i nspi r ed by

  • 7/25/2019 js-omfgjgj

    60/62

    Technologies Internet et Education TECFA 3/4/08

    Thi s exampl e i s i nspi r ed by

  • 7/25/2019 js-omfgjgj

    61/62

    Technologies Internet et Education TECFA 3/4/08

    Le fichier PHP (ajax1.php)

    Javascript et DOM - 13. AJAX js-dom-62

  • 7/25/2019 js-omfgjgj

    62/62