HTML CSS JS
HTML CSS JS
ROU
TAGE
URL
HTML
HTML…
Requête
Requête
CSS
HTML…
Javascript
Navigateur
Plan du cours initiation HTML/CSS
HTML
Présentation
Les chemins
Bonnes pratiques
3
Une page web c’est…
Du Contenu
4
Une page web c’est…
5
Une page web c’est…
6
HTML
7
HTML & XHTML
<html>
<head>
<meta
charset="ISO-‐8859-‐1">
<Otle>Page
d'exemple</Otle>
</head>
<body>
<p>Hello
world</p>
</body>
</html>
9
HTML : structure générale
<html>
<head>
<meta
charset="ISO-‐8859-‐1"/>
<Otle>Page
d'exemple</Otle>
</head>
<body>
<p>Hello
world</p>
1-‐
Des
codes
entre
</body>
<
et
>
:
les
balises
!
</html>
10
HTML : structure générale
<html>
<head>
<meta
charset="UTF-‐8">
<Otle>Page
d'exemple</Otle>
</head>
<body>
3-‐
Du
contenu
<p>Hello
world</p>
</body>
</html>
11
HTML – Les Balises
Langage de balisage composé de
balises (ou marqueurs ou tags)
Syntaxe :
<mot_cle>texte</mot_cle>
Ou <mot_cle/>
12
HTML – Les Balises
Valide :
<h1>Texte<i>sans chevauchement</i></h1>
Invalide :
<h1>Texte<i>avec chevauchement</h1></i>
13
HTML – Les Balises
Attention :
● XTML : case sensitive ; HTML5 : non
● Recommandation : noms d'attributs en minuscules
15
HTML – Les Balises
<img src="url_de_l_image"/>
<img/>
16
HTML – Les Balises
17
HTML – Les Balises
18
HTML – Les Balises
<p data-couleurDuCiel="bleu">texte</p>
est valide.
19
HTML – Les Balises
<p data-couleurDuCiel="bleu">texte</p>
20
HTML – Les commentaires
21
HTML – Les commentaires
<!doctype
html>
<html
lang="fr">
<head>
<meta
charset="UTF-‐8">
<Otle>Page
d'exemple</Otle>
</head>
<body>
<p>Hello
world</p>
</body>
</html>
2-‐
Des
blocs
:
le
document
Html
qui
conOent
un
en-‐
tête
et
un
corps
23
HTML – Structure des documents
L'imbrications des éléments
<!doctype
html>
<html
lang="fr">
<head>
Meta ...
<meta
charset="UTF-‐8">
head
<Otle>Page
d'exemple</Otle>
title
</head>
html
<body>
<p>Hello
world</p>
</body>
p
</html>
body
p
24
HTML – Structure des documents
Un en-tête
Un corps
25
HTML – Structure des documents
26
HTML – Structure des documents
Déclaration du type de document
Le tag doctype indique au navigateur dans quel type de
HTML la page a été écrite (HTML-3.2 «classique», HTML-4
de transition ou strict, XHTML, etc...).
27
HTML – Structure des documents
Langue
<html lang="fr">
28
HTML – Structure des documents
L’en-tête
Les méta-données
29
HTML – Structure des documents
L’en-tête : le titre
<title>Mon document</title>
30
HTML – Structure des documents
L’en-tête : les méta-données
Ce sont :
mots clés et description : décrire le contenu du
document et faciliter le référencement
informations / instructions aux moteurs de
recherche : indiquent s’il faut suivre les liens lors de
l’indexation d’un site, la fréquence de relecture
souhaitée
D’autres méta données permettent de préciser le nom
de l'auteur, la version…
31
HTML – Structure des documents
L’en-tête : les méta-données
Exemples :
32
HTML – Structure des documents
L’en-tête : encodage
Le type d'encodage des caractères de la page
<meta charset="encodage"/>
33
HTML – Structure des documents
A noter : L’en-tête : encodage
En utilisant l’encodage iso-8859-1 ou iso-8859-15 les
caractères ASCII 7-BIT (codes 32 à 127) sont valides, avec 4
exceptions car ce sont des caractères du langage XHTML.
34
HTML – Structure des documents
L’en-tête : encodage
En utilisant l’encodage iso-8859-1 ou iso-8859-15 :
Les caractères, en dehors de la classification ASCII 7-BIT (donc
les codes de 128 à 255), sont codés par des entités ou des
références numériques :
Par exemple :
é (codé é ou é) Remarque :
è (codé è ou è) le blanc
à (codé à ou à) insécables’écrit
ô (codé ô ou ,)
etc.
35
HTML – Structure des documents
L’en-tête : les références
Exemples :
<link rel="stylesheet" type="text/css" href="../[Link]" />
<link rel="shortcut icon" type="image/x-icon" href="[Link]" />
36
HTML – Structure des documents
Le corps du document
37
HTML – Typologie des éléments
Structure et rendu
38
HTML – Typologie des éléments
Block et inline
39
HTML & XHTML – Typologie des éléments
Les éléments de type Block
Ce sont :
Des blocs dans les documents – Exemples :
paragraphes, listes...
Apparaissent les uns en dessous des autres
40
HTML & XHTML – Typologie des éléments
Les éléments de type Block
Ils peuvent :
41
HTML & XHTML – Typologie des éléments
Les éléments de type Block
Exemples
<h1></h1> <table></table>
<h2></h2> <ul></ul>
… <ol></ol>
<h6></h6> <blockquote></blockquote>
<p></p> <dl></dl>
<div></div>
etc.
42
HTML – Structure des documents
Eléments de type block pour balisage sémantique
HTML – Structure des documents
Eléments de type block pour balisage sémantique
HTML – Structure des documents
Les éléments inline
Apparaissent au fil du texte, ils ne sont pas placés
les uns au dessus des autres (ils restent à
l’emplacement défini).
N'ont pas de marges internes ou externes par
défaut
Ne sont pas dédiés à un positionnement précis
(même si cela est possible avec les CSS)
Servent à modifier, enrichir des portions de textes,
apporter du sens
45
HTML & XHTML – Typologie des éléments
Les éléments inline
Les éléments inline :
46
Les nouveautés dans le code HTML
Des nouvelles balises
<a></a>
<em></em>
<img>
<b></b>
<i></i>
<strong></strong>
<span></span>
48
HTML – Structure des documents
Les éléments inline
Note : en HTML4, certaines balises définissaient un rendu visuel (ex :
<b> = texte en gras. Ce n'est plus le cas en HTML5.
50
HTML – Les chemins
51
HTML – Les chemins
Les chemins absolus
On peut exprimer la destination d’un lien de manière
absolue (depuis la racine) :
/rep/sousrep/[Link]
52
HTML – Les chemins
Les chemins relatifs
Descendre dans l’arborescence, vers un sous
répertoire :
nom_sous_repertoire/ ou ./nom_sous_repertoire/
./ représentant le positionnement courant
Remonter dans l’arborescence :
../
Remonter de plusieurs niveaux :
../../../
Remonter puis de redescendre dans l’arborescence :
../../autre_repertoire/autre_sous_repertoire
53
HTML – Les tableaux
54
HTML – Les tableaux
55
HTML – Les tableaux
56
HTML – Les tableaux
Exemple
<table> ...suite
<caption>Légende</caption> <tbody>
<thead> <tr>
<tr> <td>Valeur A ligne 1</td>
<th>Cellule d'en tête A</th> <td>Valeur B ligne 1</td>
</tr>
<th>Cellule d'en tête B</th>
<tr>
</tr>
<td>Valeur A ligne 2</td>
</thead> <td>Valeur B ligne 2</td>
<tfoot> </tr>
<tr> </tbody>
<td>Cellule de pied de tableau A</td> </table>
<td>Cellule de pied de tableau B</td>
</tr>
</tfoot>
57
HTML – Les tableaux
Colonnes étendues
<table>
<tr>
<th colspan="2">Cellule d'en tête étendue en largeur</
th>
</tr>
<tr> L'attribut colspan crée
<td>Valeur A ligne 1</td> des cellules qui s'étendent
<td>Valeur B ligne 1</td> sur plusieurs cellules
</tr> d'un tableau, en ligne
<tr>
<td>Valeur A ligne 2</td>
<td>Valeur B ligne 2</td>
</tr>
</table>
58
HTML – Les tableaux
Lignes étendues
<table> L'attribut rowspan crée
<tr> des cellules qui s'étendent
<th>Cellule d'en tête A</th>
sur plusieurs lignes
<th>Cellule d'en tête B</th>
d'un tableau
</tr>
<tr>
<td rowspan="2">Valeur A ligne 1 et 2 (étendu)</td>
<td>Valeur B ligne 1</td>
</tr>
<tr>
<td>Valeur B ligne 2</td>
</tr>
</table>
59
HTML – Les images
60
HTML – Les liens
61
HTML – Les liens
62
HTML – Les liens
63
HTML – Les liens
64
Quelques remarques en guise de conclusion
Valider ses documents ?
[Link]
65
Les CSS
Cascading Style Sheets
● Rôle, usages
● Sélecteurs
● Syntaxes de regroupement
● Intégration dans les documents HTML et XHTML
● L'héritage
● Présentation de quelques propriétés
● Le positionnement
● Les types de média
● Le principe de cascade
● Bonne pratiques
66
Généralités
• CSS= Cascading Style Sheets
= feuilles de style en cascade
– Ensemble de règles
– Qui sélectionnent les éléments HTML
– Qui leur associent des caractéristiques de style.
67
Les apports des feuilles de style
68
Les apports des feuilles de style
69
Les règles d'écriture
• Une règle se compose de :
– Un sélecteur
– Une déclaration entre accolades { }, composée de
propriétés séparées par des ;
§ Une propriété est constituée de
§ Un mot-clé, suivi de ":"
§ La (les) valeur(s) associée(s)
70
Les règles d'écriture
Par exemple :
/* commentaires */
71
Les sélecteurs
72
Les sélecteurs
Balises
Toutes les balises HTML peuvent servir de
sélecteurs à des règles CSS.
Exemples
– Pour agir sur les paragraphes
p { font-size: 14px;}
– Pour agir sur les liens
a{font-family:tahoma, arial, verdana;}
73
Les sélecteurs
Classes
Exemple
.maclasse { color: green;}
74
Les sélecteurs
Classes
Les classes peuvent être restreintes à un élément
– Le point est précédé de l’élément auquel la classe peut être
appliquée
– La classe ne s ’applique qu’aux éléments correspondants
[Link] {color : green;}
75
Les sélecteurs
Identificateurs
#monidentificateur { … }
76
Les sélecteurs
Identificateurs
Exemple :
#grandtitre {
font-weight: bold;
}
Côté HTML :
<h1 id="grandtitre">Mon titre</h1>
77
Quelques remarques en guise de conclusion
Utiliser des classes ou des identificateurs ?
• Lorsque c’est possible, lorsqu’un élément est
identifié de manière unique dans un document,
on privilégie l’utilisation d’un identificateur : le
code est ainsi plus facile à lire et à maintenir.
• Les classes sont adaptées pour des éléments
génériques, (éventuellement) appelés à être
utilisés plusieurs fois dans un même documents :
« types » de paragraphes, éléments redondants
(mise en valeur de portions de texte) …
78
Intégration des CSS dans les documents
79
Intégration des CSS dans les documents
Directives de style dans les balises
80
Intégration des CSS dans les documents
Directives de style dans l'en-tête
Données incorporées dans l’en-tête du document
Avec l'élément <style> dans l'en-tête du document.
Les règles s’appliquent alors à l’ensemble du document.
<head>
…
<style type="text/css">
h4 { color:green }
</style>
</head>
81
Intégration des CSS dans les documents
Feuille externe attachée ou liée
Avec l'élément <link> vers une feuille de style externe, placé
dans l’en-tête du document
<head>
…
<link rel="stylesheet" type="text/css"
href="[Link]">
</head>
…
Les règles de style se trouvent dans un fichier [Link]
auquel le document fait appel ; Il est possible et parfois utile de
lier plusieurs feuilles de styles successivement.
82
L'héritage
Remarques
Remarque : en appliquant un style « par défaut » à un
élément englobant, dans le cas où ce style n’est pas
redéfini, les éléments « enfants » de body, et les
« enfants des enfants » hériteront de ce style
<div style="color:red; font-
weight:bold;">
Rouge gras
<div> La
div
englobée
hérite
des
propriétés
de
style
Rouge gras aussi
Note
:
définir
un
style
sur
body
=
l'appliquer
par
</div>
défaut
à
tous
les
éléments
de
la
page
</div>
83
L'héritage
Remarques
84
Le positionnement
Positionnement "dans le flux"
• Par défaut, le navigateur construit l'affichage au fur et à
mesure que les descriptions des éléments lui
parviennent : un bloc est placé en dessous du
précédents, les éléments inline sont placés les uns à
côté des autres.
• Ces éléments sont alors dits "dans le flux", sa position
dépend alors de ses propres marges et des marges
internes du conteneur et des éléments adjacents.
85
Le positionnement
Positionnement dans le flux
div {
width: 600px ;
padding-top: 20px ;
border: solid 1px black;
} <div>
p { <p>paragraphe</p>
margin-left: 20px ; <p>paragraphe</p>
margin-bottom: 20px ; </div>
width: 300px;
border: solid 1px black;
}
86
Le positionnement
Positionnement relatif
87
Le positionnement
Positionnement relatif
<div> …
<p id="premier">paragraphe</p> div {
<p id="second">paragraphe</p> width : 600px ;
padding-top : 20px ;
</div> border: solid 1px black;
}
p#premier {
margin-left : 20px ;
width: 300px;
border: solid 1px black;
}
p#second {
margin-left : 20px ;
width: 300px;
border: solid 1px black;
position: relative;
left: 4px;
bottom: 22px;
}
88
Le positionnement
Positionnement relatif
Autre exemple : le décalage est relatif .decale {
à la position normale de l ’élément position: relative;
dans le bloc parent bottom: 5px;
border: solid 1px black;
}
…
<p>Un paragraphe avec
<span class="decale">un
élément
décalé</span>
du reste du texte.</p>
…
89
Le positionnement
• La position de l’élément est Positionnement absolu
déterminée de manière absolue #boite1 {
dans son conteneur parent position: relative;
width: 300px;
positionné le plus proche, ou à border: solid 1px black;
}
défaut, dans la fenêtre du #boite2 {
navigateur position: absolute;
top: 10px;
right: 30px;
• On utilise la propriété position, border: solid 1px black;
avec la valeur absolute, pour }
…
positionner un élément de <div id="boite1">
<p>Boite 1</p>
manière absolue. <div id="boite2">Boite 2</div>
</div>
• Les propriétés top, right, left,
bottom, permettent alors de
fixer la position.
90
Le positionnement
Positionnement fixé
Le positionnement fixé est très comparable au
positionnement absolu, sauf que l'élément fixé reste à
sa place sur l'écran même lorsque l'utilisateur fait
défiler le contenu.
91
Le positionnement
• On utilise la propriété float, avec Positionnement flottant
la valeur left ou right, pour #boite1 {
positionner un élément de float: right;
width: 100px;
manière flottante. border: solid 1px black;
}
• L’élément prend place à gauche #boite2 {
border: solid 1px black;
(ou à droite) dans l’élément }
conteneur. …
<div id="boite1">Boite 1</div>
• L’élément suivant occupera la <div id="boite2">Boite 2</div>
92
Le positionnement
Positionnement flottant
Exemple avec 2 boîtes flottantes …
#boite1 {
<div id="boite1">Boite 1</div> float: right;
width: 100px;
<div id="boite2">Boite 2</div> border: solid 1px black;
}
<div id="boite3">Boite 3</div> #boite2 {
float: left;
width: 100px;
border: solid 1px black;
}
#boite3 {
border: solid 1px black;
}
…
XHTML ET CSS 93
Le positionnement
Positionnement flottant
Remarque : attention, si dans le flux du
#boite1 {
document, la boîte 3 était inscrite avant les float: right;
autres boites, celle-ci, non positionnée, width: 100px;
border: solid 1px black;
prendrait toute la largeur du document. Les }
#boite2 {
autres boîtes occuperaient donc leur float: left;
emplacement « flottant », mais en dessous. width: 100px;
border: solid 1px black;
}
<div id="boite3">Boite 3</div> #boite3 {
border: solid 1px black;
<div id="boite1">Boite 1</div> }
<div id="boite2">Boite 2</div>
94
Le positionnement
Positionnement flottant
95
Le positionnement
Positionnement flottant
#boite2 {
float: left;
width: 100px;
border: solid 1px black;
}
#boite3 {
clear: both;
}
<div id="boite2">Boite 2
</div>
<div id="boite3">Boite 3
</div>
96
Le positionnement
La profondeur
• Par défaut, le dernier élément (dans l’ordre d’écriture
du code) se place au dessus des éléments
précédents.
97
Types de media
98
Types de media
Attribut media
• Lors du lien fait avec une feuille de style
l’attribut media (balise <link>) permet de spécifier un ou
plusieurs média(s) visé(s) par la feuille de style.
• Cet attribut est valable aussi lorsque l’on ouvre un bloc de
déclaration de style dans l’en tête d’un document
99
Types de media
Attribut media
100
Types de media
@-règles
@media
– Indique un bloc de règles qui ne s'appliquent qu'aux médias spécifiés.
– Cette règle est utilisable dans les feuilles de style liées ou importées,
ou dans les directives fixées dans l’en tête des documents XHTML.
@media print {
body {
background-color: #ffffff;
color: #000000;
}
}
Il est possible d’indiquer une liste de médias en les séparant par des
virgules
101
Types de media
@-règles
• all Tous médias
• aural Parole et synthétiseurs de sons
• braille Interface tactiles braille
• embossed Impression braille
• handheld Petits dispositifs ou dispositifs tenus en main
• print Impression
• projection Projection
• screen Ecrans d’ordinateurs
• tty Teletypes, terminaux…
• tv TV
102
Quelques remarques en guise de conclusion
Erreurs classiques
103
Quelques remarques en guise de conclusion
Règles d'écriture, code réutilisable
Ne pas négliger les commentaires pour , par exemple :
104
MODULE
CONCEPTION DE DOCUMENTS WEB
HTML, CSS
JAVASCRIPT
Initiation à Javascript
Plan du module
106
Initiation à Javascript
DOM
Un document web = un fichier texte
= un arbre d’éléments
Composé de :
• Nœuds de type élément = élément HTML
• Nœuds de type texte = contenu
• Liens = composition des éléments
107
Initiation à Javascript
Exemple, l’extrait de code HTML suivant : DOM
<p>Voici <em>un peu</em> de contenu</p>
Se décompose, selon le DOM en :
§ Un nœud de type élément (p) contenant
• un nœud de type texte (Voici)
• un nœud de type élément (em) contenant
o un nœud de type texte (un peu)
• un nœud de type texte (de contenu.)
p
Voici em de contenu
un peu
108
Initiation à Javascript
DOM
109
Initiation à Javascript
DOM
110
Initiation à Javascript
Javascript
Javascript comporte :
• Une présentation structurée et « orientée objet » des
éléments et du contenu d'une page.
• Des méthodes permettant d’accéder aux objets composants
le document et de les modifier.
• Des méthodes permettant d’ajouter ou supprimer des objets.
• Des accès à certaines propriétés des objets
• Une gestion d'événements (click de souris, choix dans une
liste, changement de la valeur d'un champ,….)
111
Initiation à Javascript
Javascript
Exemples d'utilisation :
• Vérifier la validité de la saisie (plage de valeur, date,…)
• Activer / désactiver des éléments (bouton OK actif
uniquement si saisie valide)
• Afficher / cacher des éléments (coche verte visible
uniquement si les deux saisies du mot de passe sont égales)
• Déplacer des éléments (animations)
• Modifier des ressources (changer le CSS d'une page)
• Créer /supprimer des éléments sur la page
• …
112
Initiation à Javascript
Javascript
113
Initiation à Javascript
Bases du langage
En javascript, tout est "objet" !
Deux types d'objets :
• les objets de type primitif, qui se résument à une
valeur unique : les nombres, les booléens et les
chaînes.
• les objets de type composé (tableaux, fonctions
ou... objets) qui comportent plusieurs propriétés,
chacune bénéficiant d'un nom et d'une valeur,
l'ensemble réuni en une seule entité (l'objet), elle
aussi identifiée par un nom.
114
Initiation à Javascript
Bases du langage
Autrement dit, un objet composé peut contenir :
• Des propriétés qui sont des objets de type primitif
• Des propriétés qui sont des tableaux
• Des propriétés qui sont des fonctions
116
Initiation à Javascript
Variables
Quelques
exemples
:
Instruc4on
Effet
var entier; Portée
locale,
déclara-on
explicite,
type
undefined,
valeur
undefined
var i = 0; Portée
locale,
déclara-on
explicite,
type
numérique,
valeur
0
valeur = i; Portée
globale,
déclara-on
implicite,
type
numérique,
valeur
0
entier = "0123"; Portée
globale,
déclara-on
implicite,
type
chaîne
de
caractères,
valeur
0123
i = entier + valeur; Portée
globale,
i
devient
la
chaîne
de
caractères
"01230".
L'affecta-on
a
nécessité
la
conversion
de
valeur
en
"0"
pour
la
concaténa-on.
117
Initiation à Javascript
Types de données
Une variable peut contenir différents types de valeurs : un
nom, une date, une heure, un prix
= des données de types primitifs / des instances d’objets
118
Initiation à Javascript
Typage dynamique
JavaScript est un langage à typage dynamique.
• Avec les langages de programmation à typage statique, lors
de la déclaration d'une variable, il est nécessaire de donner
le type de la variable. Le type de la variable ne change plus.
• Avec JavaScript, on ne peut pas déclarer le type de variable.
• L'interpréteur JavaScript détermine automatiquement le type
en fonction des données stockées dans une variable.
• Le type de la variable est susceptible de changer chaque fois
qu'on lui assigne une nouvelle valeur.
• L'opérateur typeof() permet d'obtenir le type d'une variable
119
Initiation à Javascript
Fonctions
120
Initiation à Javascript
Fonctions
121
Initiation à Javascript
Objets
• Les objets JavaScript se fondent sur des fonctions
"constructeur".
~ définition d'un objet
122
Initiation à Javascript
Objets : fonctions "constructeurs"
Elles comprennent :
• les propriétés
• les méthodes (voir plus loin)
Exemple :
function Etudiant (unNumero, unNom, unPrenom){
[Link] = unNumero;
[Link] = unNom;
[Link] = unPrenom;
}
NB : this fait référence à l'instance courante.
123
Initiation à Javascript
Objets : instanciation
L'instanciation se fait avec le mot-clé new.
unEtudiant = new Etudiant (45685, "Testeur",
"Toto");
124
Initiation à Javascript
Objets : accès aux propriétés
Il y a deux façons de déclarer des propriétéss :
125
Initiation à Javascript
Objets : accès aux propriétés publiques
On accède aux propriétés PUBLIQUES d’un objet avec le
nom de l’instance de l’objet, suivi d’un point, suivi du nom de
la propriété.
[Link]
[Link]
126
Initiation à Javascript
Objets : accès aux propriétés privées
Il faut des accesseurs, autrement dit des fonctions publiques qui
renvoient la valeur de la propriété :
function Etudiant (nom, prenom){
var id = generateId(); // propriété PRIVÉE
[Link] = function() {
return id ;
};
}
127
Initiation à Javascript
Objets : ajout de propriétés
128
Initiation à Javascript
Objets : destructeurs
Il n'y a pas de fonction destructeur explicite en
JavaScript
L'opérateur delete permet de supprimer des valeurs
(sauf celles déclarées avec var)
null peut être utilisé pour supprimer une référence
129
Initiation à Javascript
Objets : propriétés de classe (statiques)
Il est possible d'associer une propriété à une classe
(ou propriété statique).
• Elle n'est pas copiée pour chaque instance.
• Les propriétés de classe représentent souvent des
constantes communes à toutes les instances.
[Link] = "étudiant";
130
Initiation à Javascript
Objets : méthodes d'objet
= une méthode associée à un objet.
131
Initiation à Javascript
Objets : méthodes d'objet
technique 2 : accès à une fonction externe (permet la
factorisation)
function alerteNumero() {
alert ([Link] + " " + [Link] + " : " + [Link]);
}
function Etudiant (unNumero, unNom, unPrenom{
[Link] = unNumero;
[Link] = unNom;
[Link] = unPrenom;
[Link] = alerteNumero;
}
132
Initiation à Javascript
Objets : méthodes d'objet
// Corps du programme
unEtudiant = new Etudiant(45685, "Durant", "Paul");
[Link]();
133
Initiation à Javascript
Objets : méthodes d'objet
134
Initiation à Javascript
Objet prototype
Objet prototype = un objet (propriété de l'objet Object).
135
Initiation à Javascript
Objet prototype
Objet prototype
function Etudiant (unNumero, unNom, unPrenom){
[Link] = unNumero;
[Link] = unNom;
[Link] = unPrenom;
}
[Link]() {
alert ([Link] + " " + [Link] + " : " + [Link]);
}
Les différentes instances des objets Etudiants hériteront des propriétés
du prototype.
La méthode ne sera pas copiée dans chaque instance, mais
héritée du prototype.
Cela implique une moindre consommation de mémoire.
136
Initiation à Javascript
Héritage
Une définition d'objet peut descendre d'une autre définition
d'objet. Pour cela, on utilise la propriété prototype :
137
Initiation à Javascript
Objets prédéfinis
Objet
Méthodes
/
propriétés
Date
(dates
et
heures)
getMonth,
getDay,
getTime...
Document
(document
courant)
close,
open,
write...
Form
(formulaire)
target,
length,
reset,
submit,
...
History
(historique
du
navigateur)
length,
back,
forward...
Image
(images)
border,
width,
height...
LocaOon
(URL
courant)
hostname,
port,
protocol...
Math
(propriétés
et
méthodes
PI,
SQRT2,
abs,
atan,
cos,
random,
mathémaOques)
round…
Navigator
(navigateur
courant)
appName,
appVersion,
language…
Window
(fenêtre
courante)
document,
history,
name,
status,
alert,
confirm,
prompt...
138
Initiation à Javascript
Tableaux
• Objets prédéfinis en JavaScript.
• new pour l’objet constructeur Array()
monTableau = new Array (nbElements);
139
Initiation à Javascript
Tableaux
140
Initiation à Javascript
Tableaux
141
Initiation à Javascript
Tableaux
142
Initiation à Javascript
Tableaux
143
Initiation à Javascript
Structures de contrôle et de boucle
if
if (expression conditionnelle) {
commandes
}
if ... else
if (expression conditionnelle) {
commandes;
} else {
commandes;
}
if ... else if
if (expression conditionnelle) {
commandes;
} else if (expression conditionnelle) {
commandes;
}
144
Initiation à Javascript
Structures de contrôle et de boucle
switch
switch (expression) {
case etiquette1 :
commandes;
break;
case etiquette2 :
commandes;
break;
default :
commandes;
break;
}
145
Initiation à Javascript
Structures de contrôle et de boucle
while
while (expression conditionnelle) {
commandes;
}
do ... while
do {
commandes;
} while (expression conditionnelle)
146
Initiation à Javascript
Structures de contrôle et de boucle
for
for (expression d'initialisation; expression
conditionnelle; mise à jour) {
commandes;
}
Ex :
for (var i=0; i < 10; i++) {
commandes;
}
147
Initiation à Javascript
Structures de contrôle et de boucle
for ... in
Exécute la même commande ou le même groupe
de commande pour toutes les propriétés d'un objet.
for (element in groupe) {
commandes;
}
Exemple 1 :
tableau = array("printemps", "été", "hiver");
for (num in tableau) {
[Link](tableau[num];
}
148
Initiation à Javascript
Structures de contrôle et de boucle
Exemple 2 :
function Etudiant (unNumero, unNom, unPrenom) {
[Link] = unNumero;
[Link] = unNom;
[Link] = unPrenom;
}
149
Initiation à Javascript
Structures de contrôle et de boucle
With
Permet de créer un regroupement de commandes pour
lesquelles l'objet est défini puis implicite (inutile de saisir
son nom pour accéder aux propriétés).
with (objet) {
commandes;
}
Exemple :
with (unEtudiant) {
numero = 12;
nom = "Testeur";
prenom = "Toto";
}
150
Initiation à Javascript
Structures de contrôle et de boucle
break
Permet de quitter une boucle (sous réserve qu'une condition
soit remplie par exemple).
while (expression conditionnelle) {
commandes;
if (condition) {
break;
}
}
151
Initiation à Javascript
Structures de contrôle et de boucle
continue
Permet de passer directement à l'itération suivante de la
boucle.
while (expression conditionnelle) {
commandes;
if (condition) {
continue;
// si la condition vaut true, les commandes ci
// dessous ne seront pas exécutées pour cette boucle
}
commandes;
}
152
Initiation à Javascript
Evènements
153
Initiation à Javascript
Exemples d'évènements
• blur : un élément perd le focus
• change : un élément a été modifié
• click : l'utilisateur clique sur un élément
• dblclick : l'utilisateur double-clique sur un élément
• load : le navigateur a chargé la page HTML
• mouseover : l'utilisateur place le pointeur de la souris sur un élément
• reset : un formulaire est réinitialisé
• resize : l'utilisateur redimensionne la fenêtre du navigateur
• scroll : l'utilisateur se sert des barres de défilement de la page
• select : l'utilisateur sélectionne du texte
• submit : un formulaire est validé
• unload : le navigateur ferme le document
154
Initiation à Javascript
Gestionnaire d'évènements
• Les gestionnaires d'évènements permettent d'exécuter du code
JavaScript en réponse aux événements.
• En JavaScript, le gestionnaire d'événement s'écrit avec le nom de
l'événement préfixé de " on "
• Illustration :
click = événement
onclick = gestionnaire d'événement
• Exemple :
<a href="[Link]" onclick="return
[Link]('On change de page');">
155
Initiation à Javascript
Gestionnaire d'évènements
• Dans un gestionnaire d'événement, il est possible d'appeler une
fonction
• Lors de l'appel de la fonction, on peut si besoin passer l'évènement en
paramètre (par ex. pour obtenir la position de la souris, savoir si c'était
un clic gauche ou droit etc.)
Exemple :
<a href="[Link]" onclick="gererEvt(event)">
• On peut passer l'objet cliqué en paramètre, par ex. pour obtenir son id
(en plus de l'évènement ou pas)
Exemple :
<a href="[Link]" onclick="gererEvt(event, this)">
156
Initiation à Javascript
Gestionnaire d'évènements
157
Initiation à Javascript
Les commentaires
Les commentaires sont :
– encadrés par des /* et des */ lorsqu'ils tiennent sur plusieurs lignes ;
– précédés de // lorsqu'ils apparaissent sur une seule ligne.
– Exemple
/*
Mes commentaires tiennent sur plusieurs
lignes ...
*/
Code JavaScript
// Un commentaire sur une ligne
Code JavaScript
158
Initiation à Javascript
Intégration dans le document
En théorie : entouré de (nombreux) tags
<script type="text/javascript">
<![CDATA[
// Code JavaScript …
]]>
</script>
• Dans l'en-tête ou le corps du document : il est chargé en mémoire du
navigateur avant l'affichage du corps du document. D’où : déclarer ou
charger dans l'en-tête les fonctions/variables invoquées ultérieurement
dans le document.
• Attention, les navigateurs rendent le Javascript dans l’ordre d'apparition
des instructions.
159
Initiation à Javascript
Intégration dans le document
Remarque :
• les codes <![CDATA[ et ]]> permettent d'assurer la validité avec la
norme XHTML, mais peuvent poser des soucis avec le
fonctionnement de JavaScript, selon les navigateur
• Pour que le contenu de la balise script en XHTML soit interprété
correctement, on peut trouver des "astuces" telles que :
<script type="text/javascript">
<!--/*--><![CDATA[//><!--
//...
//--><!]]>
Ou (et c'est le plus simple), mettre le script dans un fichier séparé.
160
Initiation à Javascript
Intégration dans le document
Code JavaScript placé dans des fichiers externes.
ð extension .js
(fichiers au format texte contenant les lignes de code)
Exemple :
<script type="text/javascript" src="monchemin/
[Link]"></script>
161
Initiation à Javascript
Accéder au DOM
JavaScript propose un modèle objet constitué des éléments
composant un document.
• Les éléments sont placés dans une hiérarchie.
• L’objet windows, le plus « haut » hiérarchiquement,
comprend différents objets, par exemple :
– l’objet document, qui contient d'autres objets comme :
o l’objet forms (tableau des formulaires) ;
o l’objet images (tableau des images) ;
o l’objet links (tableau des liens) ;
– l’objet history (historique des documents lus par le
navigateur) ;
– l’objet location (URL du document lu par le navigateur, en
lecture ou pour modification) ;
if () {
// la valeur ne correspond pas au format souhaité : alerte utilisateur
alert('Le code postal saisi ne semble pas valide');
var elt=[Link]("uid");
164
Initiation à Javascript
Accéder au DOM
var tableauDesParagraphes =
[Link]("p");
165
Initiation à Javascript
Accéder au DOM
Exemple : je souhaite retrouver tous les liens d’un document et
créer un gestionnaire d’événement pour chacun d’entre eux.
function installerGestionnaireDeLiens() {
// je cherche toutes les balises a (<a href=…) dans le document
var liens = [Link]("a");
166
Initiation à Javascript
Accéder au DOM
• Cette fonction (fantaisiste) pourra être appelée au chargement du
document (lorsque le document est chargé) avec
<body onload="installerGestionnaireDeLiens();">
• ou, si l’on souhaite que le code JavaScript ne soit pas "intrusif" (cette
notion indique que l’on sépare le code JavaScript du code HTML), le
gestionnaire d’événement peut être placé dynamiquement :
[Link]=function(){
installerGestionnaireDeLiens();
}
167
Initiation à Javascript
Accéder au DOM
var eltsArray=
[Link]("maClasse");
168
Initiation à Javascript
DOM : accéder aux attributs
169
Initiation à Javascript
DOM : accéder aux attributs
Voici la fonction du chapitre précédent revue pour que la boite
de dialogue affiche la valeur de l’attribut href des liens
function installerGestionnaireDeLiens() {
var liens=[Link]("a");
for (var i=0; i<[Link]; ++i) {
liens[i].onclick=function() {
alert(liens[i].getAttribute("href")) ;
return false ;
}
}
}
170
Initiation à Javascript
DOM : accéder aux attributs
171
Initiation à Javascript
DOM : accéder aux attributs
La méthode setAttribute permet de fixer la valeur de l’attribut
d’un élément. Elle s’applique donc à un élément, le nom de
l’attribut est passé en paramètre, ainsi que la valeur souhaitée
pour cet attribut.
[Link]("att","val");
par exemple
//...
liens[i].setAttribute("title","un titre") ;
//...
172
Initiation à Javascript
DOM : suppression d'attribut
173
Initiation à Javascript
DOM : trouver le style d'un élément
Il est possible de trouver une directive de style appliquée à un nœud
dans le DOM.
Seule la syntaxe des propriétés changent par rapport à celle des déclarations
CSS : les propriétés comportant un trait d'union sont réécrites en un seul « bloc »
en supprimant le trait d'union et en mettant en majuscule la première lettre du mot
suivant (par exemple : border-bottom devient borderBottom).
175
Initiation à Javascript
DOM : créer des éléments
En résumé :
176
Initiation à Javascript
DOM : créer des éléments
177
Initiation à Javascript
DOM : créer des éléments
– cloneNode : cloneNode permet la copie soit de la structure
d'un élément, soit de la structure et du contenu d'un élément
vers un autre élément.
Par exemple :
var noeud = [Link](false); //
false indique que seule la structure est
copiée
var noeud = [Link](true); //
true indique que la structure et le contenu
sont copiés
178
Initiation à Javascript
DOM : créer des éléments
var elt=[Link]("unId");
// je crée la liste (ul)
var newUl = [Link]("ul");
// je j’ajoute comme enfant du nœud principal
Exemple
:
créer
[Link](newUl);
une
liste
(ul)
// je crée un élément de liste (li)
d’élément
(li)
var newLi = [Link]("li");
dans
un
nœud
// je l’ajoute comme enfant à l’élément ul
donné
dont
l’id
[Link](newLi);
est
"unId"
// Je crée un nœud de type text
li_text = [Link]("Hello world");
// je l’ajoute comme enfant de l’élément de liste
[Link](a_text);
179
Initiation à Javascript
<!--[if lt IE 9]>
<script>
[Link]("header");
[Link]("footer");
….
</script>
<![endif]-->
Par exemple :
eltParent. removeChild(eltEnfant);
[Link]([Link]);
181
Initiation à Javascript
DOM : méthodes et propriétés relationnelles
– ParentNode : retourne le nœud parent d’un nœud.
eltParent = [Link];
– ChildNodes : tableau de tous les nœuds enfants d’un nœuds donné (ou
undefined s’il n’y a pas d’enfants)
var tousLesEnfants = [Link];
var nbEnfants = [Link] // nombre
d’éléments enfants
182
Initiation à Javascript
DOM : méthodes et propriétés relationnelles
– firstChild : retourne le premier enfant d’un noeud
var premierEnfant = [Link];
183
Initiation à Javascript
DOM : méthodes et propriétés
Propriétés d’un nœud
– nodeName renvoie le nom du nœud courant.
Par exemple, si elt désigne un élément img, [Link] renvoie la
chaîne de caractères "img".
184
Initiation à Javascript
DOM : méthodes et propriétés
• innerHTML vs Méthodes DOM
innerHTML est une propriété facile à utiliser pour lire ou écrire le code HTML d’un élément,
propriété généralement reconnue par les navigateurs (attention, cela ne concerne pas les
documents qui sont d’un content type application/xhtml+xml)
Exemple :
<div id="test">
<p>Voici <em>un peu</em> de contenu</p>
</div>
Si je fais :
var monTest=[Link]("test");
alert([Link]);
La boite de dialogue m’affichera : <p>Voici <em>un peu</em> de contenu</p>
185
Initiation à Javascript
DOM : méthodes et propriétés
innerHTML
– C’est une manière rapide est facile de modifier le contenu
d’un élément mais elle n’a pas la « granularité » des
méthodes DOM, et le contenu inséré n’est pas manipulable
dans toute sa hiérarchie d’éléments.
– C’est donc une méthode à réserver pour « aller vite », dans
des cas ne nécessitant pas de manipulation des éléments
insérés.
186
Utilisation de Javascript en HTML
Canvas 1/2
[Link] = linearGradient1;
[Link](10,10,110, 110);
Utilisation de Javascript en HTML
Canvas : exemple (1/2)
hsp://[Link]/arOcles/html5-‐canvas-‐example/
var width = 125; // Triangle Width
var height = 105; // Triangle Height
var padding = 20;
// Draw a path
[Link]();
[Link](padding + width/2, padding); // Top Corner
[Link](padding + width, height + padding); // Bottom Right
[Link](padding, height + padding); // Bottom Left
[Link]();
…
…
[Link] = "center";
[Link] = "middle";
[Link] = "bold 60px 'Times New Roman', Times, serif";
[Link] = gradient;
try{
[Link]("!", canvasWidth/2, padding + height/1.5);
}catch(ex){}
Utilisation de Javascript en HTML
Canvas : exemple (2/2)
hsp://www.eff[Link]/demos/canvascycle/
Utilisation de Javascript en HTML
Canvas : KineticJS
<script src="[Link]
script>
...
<div id="container"></div>
...
<script>
var stage = new [Link]({
container: 'container',
width: 578,
height: 200
});
Geolocation API
Fonctionne avec Javascript et l'objet [Link]
Récupère les coordonnées du poste de l'utilisateur en longitude,
latitude et altitude
getCurrentPosition
watchPosition (suivi en continu)
Les nouveautés dans le code Javascript
L'API de géolocalisation
Exemple: fonction de callback nommée (maPosition) et passée en argument à
getCurrentPosition() => fournit une série de propriétés (dans l'exemple la position, mais
aussi la vitesse, la précision, etc.)
interface Coordinates {
readonly attribute double latitude;
readonly attribute double longitude;
readonly attribute double? altitude;
readonly attribute double accuracy;
readonly attribute double? altitudeAccuracy;
readonly attribute double? heading;
readonly attribute double? speed;
interface Position { };
readonly attribute Coordinates coords;
readonly attribute DOMTimeStamp timestamp;
};
hsp://[Link]/tuto/lire/926-‐geolocalisaOon-‐geolocaOon-‐[Link]
Les nouveautés dans le code Javascript
Le Drag and Drop
Accéder au contenu
Déplacer, copier, supprimer, écrire...
hsps://[Link]/en-‐US/docs/Using_files_from_web_applicaOons
Les nouveautés dans le code Javascript
Stockage local
Web Storage
API sessionStorage
Stockage de données de session
Durée de vie courte
API localStorage
Stockage de données sur la machine cliente
Restent stockées même près la fermeture du navigateur
= Alternatives aux sessions coté serveur et aux cookies
= Scripts exécutés sur le client uniquement (sans requêtes au serveur)
[Link]("name", "John");
alert([Link]("name"));
hsp://[Link]/node/218
Les nouveautés dans le code Javascript
API Offline Web
Le
fichier
htaccess
:
AddType
text/cache-‐manifest
manifest
hsp://www.html5-‐[Link]/html5/tutoriel-‐applicaOon-‐web-‐offline-‐html5-‐cache-‐
manifest
Les nouveautés dans le code Javascript
API Push
Push API
Événements envoyés par le serveur
A l'initiative du serveur
SSE : Server-Sent Events
C'est le client qui initie la connexion et va ensuite rester à
l'écoute, la connexion est alors permanente
Le serveur peut alors envoyer des informations au format
texte / json
Server Sent events : exemple
Web Sockets
Communications par sockets avec un serveur
Applications :
hsp://[Link]/[Link]?post/2011/02/25/Html5-‐et-‐les-‐webSockets
Les nouveautés dans le code Javascript
Web Workers
Web Workers
Javascript en multithread
Javascript en tâche de fond
Non bloquant pour le navigateur
hsp://[Link]/b/davrous/archive/2011/07/08/introducOon-‐aux-‐web-‐
workers-‐d-‐html5-‐le-‐mulOthreading-‐version-‐[Link]