Académique Documents
Professionnel Documents
Culture Documents
A. Ibriz
1ère Année Génie Informatique
Objectifs du cours
Technologies
Client Web : Chrome
1 Requête http
Serveur Web
www.usmba.ac.ma
3 Réponse http
4 2
Le prologue:
PAGES WEBS STATIQUES &
DYNAMIQUES
Outils:
Langages:
HTML, XHTML, DHTML, PHP, ASP, CGI,XML, feuille de style,….
Serveurs:
Apache, IIS
Environnements:
DreamWeaver, 1stpage, …
llah
b de è s
n A eF
Be ogi
l
ed n o
m
m ch
a Te 09
L e s
M
h
o de 20
e ©
is di ieur RIZ M si t
té pér A, IB T t e
ve
si
r su H e d
i
Un Écol
e
o n
t i b
e p e
n c W
Co
Historique
Le langage HTML tire son origine du langage SGML (Standard Generalized
Markup Language). Il s'agit d'un type particulier d'annotations destiné au
WWW et qui correspond à une collection de styles reconnaissables par les
navigateurs.
Un navigateur (en anglais "browser") est donc un logiciel qui interprète à
l'écran les commandes HTML contenues dans un document accessible sur
le WWW.
HTML & HTTP - un standard et un protocole simples
La simplicité explique en partie le succès du WWW
Un langage en évolution
Le langage HTML est utilisé sur le WWW depuis 1990. La version
actuellement en vigueur est HTML 5.0
Versions en vigueur
HTML 2.O (rare)
HTML 3.0 (assez souvent)
HTML 3.2 (souvent)
HTML 4.0 (fréquent)
HTML 5.0 (dernière version)
HTML : définition et principes
généraux
HTML (Hypertext Markup Language)
langage de balisage hypertexte
inventé par Tim Berners Lee au CERN
principe : tous les documents ont des éléments en commun DONC il est possible de les
étiqueter, de les baliser.
permet de
publier des documents on-line
retrouver de l'information on-line via liens
opérer des transactions entre services
inclure du multimedia et d'autres applications dans les documents
se compose d'une collection de styles (indiqués par des balises) qui définissent les divers
composants d'un doc. W3
décrit le structure et le contenu d'un document ET NON le format et l'apparence d'une
page
Créer des documents
lien
doc. A doc. B
Créer un lien ... vers une section
spécifique d'un autre document
Définir la cible
dans le document "cible"
<A NAME = "nom de la section"> section </A>
lien
cible
doc. A doc. B
Créer un lien ... vers une section
spécifique du doc. courant
lien
même procédé en supprimant le nom de fichier.
partie cible
document A
Autres liens
lien vers un serveur de news
<A HREF="news:comp.html.news"> ... </A>
pour que le lien soit valide, le visiteur doit être abonné au serveur de news
lien vers un fichier à télécharger
<A HREF="fichier.exe"> cliquez ici pour télécharger </A>
lien e-mail
<A HREF="mailto:adil@caramail.com">adresse_e_mail</A>
avec sujet
<A HREF="mailto:estf@caramail.com?subject=renseignement">adresse</A>
avec sujet et texte dans le corps du message
<A HREF="mailto:estf@caramail.com?subject=renseignement&BODY=votre
message">adresse_e_mail</A>
avec sujet, envoyé à 2 personnes
<A HREF="mailto:estf@caramail.com&cc=webmaster@estf.ma
&subject=renseignement">adresse_e_mail</A>
Types de liens
liens absolus
permet de localiser un fichier à partir du répertoire courant du noeud le plus
élevé de l'arborescence du disque dur.
commence toujours par une barre de fractionnement
ne sont pas "portables"
liens relatifs
pointe vers un fichier spécifique
ne prend en compte que le nom du fichier
ne devra pas être modifié si on déplace le fichier dans l'arborescence du disque
en bref ...
types de liens
internes (doc. renvoie à une de ses sections)
externes (doc. renvoie à un autre doc. ou à une section d'un autre doc.)
exécutables (fichiers en téléchargement, déclenchement d'animations ou de
programmes -plug-in)
IMPORTANT
on peut imbriquer une ancre dans une balise
<H1> <A HREF="texte.htm"> Chanson </A> </H1>
mais ne jamais faire l'inverse
<A HREF="texte.htm"> <H1>Chanson</H1> </A>
Les URL
utilisés pour
créer un lien vers une autre ressource
associer un programme externe à une page html (feuille de style, script, applet ...)
inclure une image ou un objet
créer une image réactive
envoyer un formulaire
créer des frames
spécifier des métadonnées
Définition
Uniform Ressource Locator
adresse physique d'un ensemble de données sur Internet
Les URL
regroupe diverses informations
type de ressource accessible (protocole d'accès)
adresse du serveur
localisation du fichier (détail de l'arborescence)
syntaxe
protocole :// nom de machine [: port] / nom de fichier [#ancre]/ ? liste de
paramètres
exemple
http://www.think.com:210/directory-of-servers?inria
quelques types de ressources ...
file://
ftp://
news:
Les URL
caractères spéciaux
lettre de l'alphabet (MAJ ou min)
chiffre de 0 à 9
$-_+.
Pour tout autre signe ...
caractère d'échappement (ISO LATIN 1)
http://.../.../.../html/liens absolus/exemple.html
pas reconnu
http://.../.../.../html/liens%20absolus/exemple.html
code correct
Les URL
Listes
non ordonnées
<UL>
<LI> premier item
<LI>second item
</UL>
ordonnées
<OL> ... </OL>
de définition
<DL>
<DT> terme à définir
<DD> définition
<DT>
<DD>
</DL>
Les listes ... variantes typographiques
listes non-ordonnées
TYPE = "disc/circle/square"
PLAIN
SRC = "cercle.gif"
DINGBAT
WRAP = "horiz"
listes ordonnées
TYPE = "1/A/a/I/i"
START = "n"
listes de définition
COMPACT
Petit exercice ...
Recommandations :
penser au temps de chargement et d'affichage
ne jamais afficher d'images situées sur serveur extérieur
astuce : préciser attributs WIDTH et HEIGHT
possibilité de récupérer doc. sans images
demandez vous si une image est indispensable
offrez une alternative <IMG ALT ... >
pensez à leur destination
résolution écran : 72 dpi
résolution impression courante : 300 dpi
une bonne image vaut mieux qu'un long discours,
MAIS une bonne image est plus longue à charger qu'un long discours ...
Images mappées
Plusieurs méthodes :
CSIM (Client-Side IMage)
la plus utilisée car fait partie de la norme html 3.0
Les fichiers mappés sont inclus dans la page html
pas besoin de CGI sur un serveur pour les rendre opératoires.
CERN
NCSA
Images mappées
Premier temps :
Deuxième temps :
<MAP NAME="nom_de_map">
<AREA SHAPE=méthode COORDS="coordonnées" HREF="lien" ALT="commentaires"
TARGET="cible de frame">
</MAP>
Images mappées
définition des coordonnées pour :
un rectangle SHAPE=RECT COORDS="x, y, x1, y1"
x,y
x1,y1 un cercle SHAPE=CIRCLE COORDS="x,y,r"
à chaque cube on
associe un fichier.htm
listes à ascenceur
<SELECT NAME = "menu" SIZE = "6" MULTIPLE>
<OPTION> cict
....
</SELECT>
classe 3 : TEXTAREA
<TEXTAREA NAME = "commentaires" ROWS="10" COLS="5">
Entrez vos commentaires </TEXTAREA>
Formulaires (4/4)
2 attributs communs
NAME
VALUE
pour un champ texte : prédéfinit le contenu
pour un bouton
submit ou reset : indique texte du bouton
checkbox ou radio : indique valeur du bouton enfoncé
Tableaux
Intérêt :
pratique et ergonomique / palliatif des insuffisances de html
avant : <PRE>
Balises principales
<TABLE> </TABLE>
attribut BORDER = "px"
astuce <TABLE BORDER="0">
<CAPTION> titre du tableau </CAPTION>
attribut ALIGN = "top" (valeur par défaut) ou "bottom"
<TABLE SUMMARY="description"> sera interprété par synthétiseurs vocaux
ligne <TR> </TR>
en-tête <TH> </TH>
cellule <TD> </TD>
Tableaux
La description d'un tableau en HTML se fait ligne par ligne et pour chaque ligne, cellule par
cellule
colonnes calculées automatiquement en fonction du nombre de
cellules par ligne
Chaque cellule peut contenir n'importe quel élément HTML (image, texte, lien, applet, tableau
...)
TABLEAUX
Cellules vides
<TD></TD> ou <TD><BR><TD>
Affichage
ALIGN = "LEFT" "RIGHT" "CENTER" "JUSTIFY"
Alignement dans les cellules
<TD ALIGN = "left/right/center">
<TD VALIGN = "top/middle/bottom">
mêmes attributs dans <TR> vaudront pour toute la ligne
par défaut
en-têtes centrées horiz. et vert.
données centrées et alignées à gauche
top
middle valign
bottom
TABLEAUX
cellules fusionnées
une cellule sur plusieurs lignes ou colonnes
ROWSPAN
1 cellule sur hauteur de plusieurs lignes
valeur de l'attribut définit hauteur en ligne de la cellule
COLSPAN
1 cellule sur largeur de plusieurs colonnes
valeur de l'attribut définit largeur en colonne de la
cellule
cellule fusionnée
<TD COLSPAN="2">cellule fusionnée</TD>
TABLEAUX
épaisseur de quadrillage
CELLSPACING="px" (2 par défaut)
espacement des données
CELLPADDING="px" (1 par défaut)
TABLEAUX
groupement de lignes
THEAD, TFOOT, TBODY
groupement de colonnes
COLGROUP
ces groupements permettent :
d'appliquer des feuilles de style sans les répéter
d'éviter de ressaisir des données si le tableau est sur plusieurs pages
d'interroger et de faire des tris à la manière d'un tableur
TABLEAUX
bords et enrobages
bordures extérieures
frame = "void/above/below/hsides/vsides/lhs/rhs/box"
bordures intérieures (séparations entre lignes et colonnes)
rules = "none/groups/rows/cols/all"
Frames
Définition
l'écran est divisé en plusieurs zones
chaque zone est un document propre
intérêt : ergonomie accrue
Balises
<FRAMESET> remplace <BODY> pour le corps du document.
ROWS pour diviser en sous-zones horizontales
COLS pour diviser en sous-zones verticales
4 manières de spécifier valeur de ces zones
% hauteur/longueur de la sous zone en % de la zone "mère"
n hauteur/longueur de la sous zone en pixels
* indique au browser d'attribuer à la sous zone toute la place restante
x entier
Frames
<FRAME>
SRC indique url du doc. à afficher dans la zone
NAME permet de nommer la zone afin qu'elle puisse devenir la cible d'un lien
MARGINWIDTH
MARGINHEIGHT
SCROLLING = "yes/no/auto" indique si la zone doit posséder une barre de
défilement
NORESIZE empêche toute modification par l'utilisateur de la taille d'une zone
BORDER / BORDERCOLOR="#FFFFFF"
FRAMEBORDER = "0 ou 1"
<NOFRAMES>
indique texte de remplacement si le browser ne gère pas les frames
Frames
! Fond d'écran
• avec une couleur <BODY BGCOLOR = "#666666">
– attention au contraste pour la lisibilité
• avec une image <BODY BACKGROUND = "image.gif">
– attention aux "jointures" et au temps de transmission
28/02/2022 Ibriz
CSS : DEFINITION
CSS = Cascading Style Sheets
Créé en 1996
Fonction : mettre en forme le contenu en lui ajoutant des styles
28/02/2022 Ibriz
LES VERSIONS CSS
CSS 1.0 (1996):
CSS3
Introduisent de nouvelles fonctionnalités très attendues : insérer des vidéos, bordures arrondies, etc.
66
28/02/2022 Ibriz
OÙ ECRIRE LE CSS ?
3 possibilités :
Dans l’élément head du document HTML,
Dans la balise ouvrante d’un élément,
Dans un fichier CSS séparé.
Il est recommandé d’utiliser la dernière méthode.
67
28/02/2022 Ibriz
OÙ ECRIRE LE CSS ?
Dans l’élément head du document HTML : à éviter
68
28/02/2022 Ibriz
OÙ ECRIRE LE CSS ?
Dans la balise ouvrante d’un élément: Mauvaise
69
28/02/2022 Ibriz
OÙ ECRIRE LE CSS ?
Dans un fichier CSS séparé.
Il est recommandé d’utiliser la dernière méthode.
70
28/02/2022 Ibriz
SELECTEURS, PROPRIETES, VALEURS
28/02/2022 71
Ibriz
SELECTEURS, PROPRIETES, VALEURS
• Exemple:
sélecteur p{ valeurs
color: blue;
propriétés
font-size: 16px;
72
}
28/02/2022 Ibriz
LES COMMENTAIRES EN CSS
Les fichiers CSS sont très vite très longs : il est donc essentiel de les commenter proprement !
73
28/02/2022 Ibriz
LES SELECTEURS SIMPLES
28/02/2022 Ibriz
LES SELECTEURS SIMPLES
75
28/02/2022 Ibriz
CLASS & ID
Class et Id sont deux attributs HTML, créés pour pouvoir appliquer différents styles à des éléments
de même type.
Class permet également d’appliquer le même style à différents élément HTML (en leur appliquant la
même valeur pour l’attribut class).
Différence ? Id ne peut être utilisé que pour cibler un unique élément, au contraire de class.
76
28/02/2022 Ibriz
CLASS & ID
77
28/02/2022 Ibriz
Pourquoi les deux CLASS & ID ?
78
28/02/2022 Ibriz
DIV & SPAN
Div et Span sont deux élément HTML créés, entre autres, pour pouvoir appliquer un style à du
contenu n’ayant pas de balise.
Div et Span servent de containers mais ne possèdent aucune valeur sémantique.
On doit les utiliser seulement si cela est nécessaire.
Nous allons nous en servir pour entourer des blocs de code et ainsi pouvoir attribuer des styles particuliers
à ces blocs.
79
28/02/2022 Ibriz
DIV & SPAN
Il existe une différence entre div et span : div est un élément de type
block tandis que span est un élément de type inline. 80
28/02/2022 Ibriz
ELEMENTS DE TYPES BLOCK & INLINE
Tout élément, en HTML, est soit un élément de type block, soit un élément de type inline.
81
28/02/2022 Ibriz
ELEMENTS DE TYPES BLOCK & INLINE
28/02/2022 Ibriz
ELEMENTS DE TYPES BLOCK & INLINE
ol, ul, dl a 83
table img
28/02/2022 Ibriz
SELECTEURS AVANCES
Il est possible de combiner les sélecteurs pour cibler précisément du contenu.
84
28/02/2022 Ibriz
SELECTEURS AVANCES
Sélectionner le premier élément B suivant un élément A :
A + B { propriété: valeur; }
85
28/02/2022 Ibriz
L’HERITAGE
Les éléments en HTML « héritent » des styles de leurs parents. D’où le « cascading » de CSS.
86
28/02/2022 Ibriz
L’HERITAGE
87
28/02/2022 Ibriz
Cours CSS
Chapitre 2:
Formater du texte et positionner des
éléments
88
28/02/2022 Ibriz
LES PROPRIETES CSS DE TYPE “FONT-”
La propriété font-size
La propriété font-style
89
28/02/2022 Ibriz
LES PROPRIETES CSS DE TYPE “FONT-”
La propriété font-style
Nous avons dit plus haut que tout élément enfant héritait par défaut des styles de
ses parents. A quoi sert donc la valeur inherit ? En fait, cette dernière sert à
annuler un style dans un cas bien particulier.
90
28/02/2022 Ibriz
LES PROPRIETES CSS DE TYPE “FONT-”
La propriété font-weight
28/02/2022 Ibriz
LES PROPRIETES CSS DE TYPE “FONT-”
La propriété line-height
sert à fixer l’écartement, c’est-à-dire la distance entre deux lignes de texte.
La propriété font-family
permet de choisir la police de notre texte.
…..
La propriété color
92
28/02/2022 Ibriz
LES PROPRIETES CSS DE TYPE “FONT-”
La propriété color
93
28/02/2022 Ibriz
LES PROPRIETES CSS DE TYPE “FONT-”
La propriété color
94
28/02/2022 Ibriz
LES PROPRIETES CSS DE TYPE “FONT-”
L’opacité du texte
95
28/02/2022 Ibriz
LES PROPRIETES CSS DE TYPE “-”
L’opacité du texte
96
28/02/2022 Ibriz
LES PROPRIETES CSS DE TYPE “TEXT-”
text-align:
Left : le texte sera aligné sur la gauche ; valeur par défaut ;
Center : le texte sera centré ;
Right : le texte sera aligné sur la droite ;
Justify : le texte sera justifié ;
Inherit : hérite des propriétés de l’élément parent
97
28/02/2022 Ibriz
LES PROPRIETES CSS DE TYPE “TEXT-”
La propriété text-decoration :
Underline : le texte sera souligné ;
Overline : une ligne apparaîtra au dessus du texte ;
Line-through : le texte sera barré ;
Blink : le texte clignotera (attention, ne fonctionne pas sur tous les navigateurs) ;
Inherit ;
None : pas de décoration, comportement par défaut
98
28/02/2022 Ibriz
LES PROPRIETES CSS DE TYPE “TEXT-”
La propriété text-indent :
99
28/02/2022 Ibriz
LES PROPRIETES CSS DE TYPE “TEXT-”
La propriété text-transform :
Uppercase : transforme tout le texte en majuscules ;
Lowercase : met tout le texte en minuscules ;
Capitalize : met uniquement la première lettre de chaque mot en majuscule ;
None : pas de transformation ;
Inherit : hérite des styles de l’élément parent.
100
28/02/2022 Ibriz
LES PROPRIETES CSS DE TYPE “TEXT-”
Et encore :
101
28/02/2022 Ibriz
LES PROPRIETES CSS DE TYPE “TEXT-”
Et encore :
102
28/02/2022 Ibriz
Cours CSS
Chapitre 3: Modèle en Boite
103
28/02/2022 Ibriz
Le principe du modèle en boite
Positionner les différents éléments de votre page web.
Tout élément d’une page est une boîte rectangulaire et peut avoir un padding, une marge et des bordures
:qu’il soit un élément de type block ou de type inline, est une boîte rectangulaire.
Les propriétés permettant d’indiquer la longueur, la largeur, la marge, le padding et les bordures d’un
élément forment ce qu’on appelle le modèle des boîtes.
104
28/02/2022 Ibriz
Illustration du modèle en boite
105
28/02/2022 Ibriz
Hauteur et largeur d’un élément
106
28/02/2022 Ibriz
Les bordures
• Border-width, qui va définir l’épaisseur de la bordure (valeur en px) ;
• Border-style, qui va définir le style de la bordure ;
• Border-color, qui va définir la couleur de la bordure (accepte les mêmes valeurs que la propriété « color »).
107
28/02/2022 Ibriz
Les arrondies
• a vu le jour avec le CSS3
• Notez que l’on peut définir des angles différents pour chaque côté de nos bordures en utilisant les
mots clefs top-left, top-right, bottom-left et bottom-right.
108
28/02/2022 Ibriz
Les marges intérieures: Padding
109
28/02/2022 Ibriz
Les marges extérieures
110
28/02/2022 Ibriz
Les ombres des boîtes
28/02/2022 Ibriz
Faire flotter un élément
Pour aligner des éléments les uns par
rapport aux autres, on peut les faire «
flotter ». Pour faire flotter un
élément, nous utiliserons la propriété
float avec les valeurs suivantes : left,
right, none ou inherit.
28/02/2022 Ibriz
La propriété display
La propriété display est une propriété extrêmement puissante : elle permet de
changer le type d’un élément de block à inline ou d’inline à block.
113
28/02/2022 Ibriz
La propriété position
permettant de définir l’emplacement
d’éléments HTML dans une page. Cette
propriété peut prendre cinq valeurs :
115
28/02/2022 Ibriz
!" #"$% & !'()
Accueil
MA PAGE
Bienvenue dans ma page
à moi, où je raconte tout INFO
qu’est ce que je veux !
Mes enseignements
116
page crée par Moi.
Mes amis
28/02/2022 Ibriz
JavaScript
!"#$%&%' ()*(+
Introduction (1)
Javascript permet de rendre dynamique un site internet
développé en HTML.
Javascript permet de développer de véritables applications
fonctionnant exclusivement dans le cadre d'Internet.
Le Javascript est un langage de script simplifié orienté objet
dont la syntaxe est basée sur celle du Java.
Javascript a été initialement élaboré par Netscape en
association avec Sun Microsystem.
Plus tard, Microsoft développera son propre langage Javascript officiellement
connu sous le nom de JScript.
Introduction (2)
Contrairement à un applet Java qui est un programme
compilé, les scripts écrits en Javascript sont interprétés
Le Java, représenté par un ou plusieurs fichiers autonomes dont
l'extension sera *.class ou *.jar, est invoqué par une balise HTML
spécifique
Le JavaScript est écrit directement au sein du document HTML sous
forme d'un script encadré par des balises HTML spéciales.
Javascript est standardisé par un comité spécialisé, l'ECMA
(European Computer Manufactures Association).
HTML et JavaScript
!"#$"%&#'()*#+&,-"#(./0./12#3456&57-#!&8#+&9:#
;"!78&8#8$<37=7>9&8#&6#75+78$&58";!&8#
,-./'012%&345&4$678&9&:./'017;
<<<<<<<<<<<<
,=-./'01;
*"+�","23-7$6#8?756@%-&#+&#+&9:#A"57@-&#",&3#!&#
34+&#'()*
!"#$%&'()*+%#,*('-)' ,.%&#/'#-+,'#0123
!"#$%&"#'()(*$+,-.#/0,1/2+"#3"#-34/#/%4)"1.#&(1/#3(#-(5"#678!#"33"#
9:9";#
<0"/.#3(#9=.>%&"#3(#-34/#/,9-3"#".#3(#-34/#?+=@4"99"1.#4.,3,/="#-(+#3"/#
&=)"3%--"4+/#&"#/,."/#A1."+1".;#
4"#$%&'()*+%#-+55'#6%#5+,6/'#'7)'(%'
1. Insertion dans une page
HTML,9*%&:('(#,6#-+,'#;.<.=-(*>)#,.%%'#
$/#'7*&)'#4#5.%*8('&
>.?'#0123#
1.1 Insertion pour exécution directe
Le code s'exécute automatiquement
lors du chargement de la page HTML
dans le navigateur en même temps que <html>
le contenu de la page HTML <head>
s'affiche à l'écran. <title>..... </title>
</head>
Le code JavaScript est placé <body>
dans le corps même de la page HTML, <script
entre les balises <body> .......... Et language="JavaScript">
......... </body> alert(‘bonjour’);
</script>
</body>
</html>
1.2 Insertion et exécution
événementielle
!"#$%&"#B()(/$+,-.#"/.#&0(C%+"#-(+#3"#
1(),5(."4+D#/.%$E=#"1#9=9%,+"D#-%4+#1"# <html>
/0"F=$4."+#@4"#/4+#&"9(1&"D#3%+/#&4# <head>
&=$3"1$>"9"1.#& G41#=)=1"9"1.;# <title> ..........
</title>
!"#$%&"#'()(*$+,-.#"/.#-3($=#&(1/#3"#$%+-/# <script
9:9"#&"#3(#-(5"#678!D#"1.+"#3"/#C(3,/"/# language="JavaScript">
H>"(&I ;;;;;;;;;;#".#;;;;;;;;;#HJ>"(&I function auRevoir ()
{ alert(‘ Au
!"#$%&"#/0"F=$4."+(#/"43"9"1.#3%+/#&041# revoir’);}
=)=1"9"1.#5=1=+=#-(+#,1."+)"1.,%1#&"# </script>
304.,3,/(."4+;# </head>
A3#?(4.#=$+,+"#3"#$%&"#$%++"/-%1&(1.#K#$".# <body
onUnload=auRevoir();>
=)=1"9"1.#&(1/#3"#$%+-/#&4#&%$49"1.# Excécution différée
678!; </body>
</html>
2. Insertion par appel de
module externe
.5#$&96#758<-&-#+9#34+�","23-7$6#&5#="78"56#"$$&!#B#95#
A4+9!&#&:6&-5-49,"56#B#5?7A$4-6&#>9&!!&#"+-&88&#
C/1DEF# ,-./'012-/.67>*?2#52@A#5%$2$B1$/3$7;
<<<<<<<<<<<<
,=-./'01;
3'&#,'67#@./*&'&#,'#;.<.&-(*>)#,+*<'%)#A)('#>/.-:&#'%)('#/'&#
1.?&#B@+,CD ')#BE@+,CD ,.%&#/'#-.&#,96%'#'7:-6)*+%#,*('-)'#+6#
'%)('#/'.?&#BF'.,D ')#BEF'.,D ,'#/.#>.?'#0123#>+6(#6%'#
'7:-6)*+%#,*GG:(:'"
=)+-H:#,.%%#G*-F*'(#&6(#/'#&'(<'6(#I#&+%#.,('&&'#,9.>>'/#
&+6&#G+(5'#,'#1JK1J#=$2L3J >+().%)#/9'7)'%&*+%#")7) +6#"M&
=*5>/*G*'#/.#5.*%)'%.%-'#,'&#&*)'&#G.*&.%)#.>>'/#I#,'+,6/'&#
;.<.=-(*>)#-+556%&#I#>/6&*'6(&#>.?'{"#
$%-+%<:%*'%)#N#/9.>>'/#.6#-+,'#'7)'(%'#?:%8('#6%'#('O6A)'#
&6>>/:5'%).*('#<'(&#/'#&'(<'6(P#')#'%-+5@('#/'#(:&'.6
Entrée et sortie de données avec
JavaScript
3 types de boites de messages peuvent être affichés en utilisant
Javascript : Alerte, Confirmation et Invite
Méthode alert()
sert à afficher à l’utilisateur des informations simples de type texte. Une fois que
ce dernier a lu le message, il doit cliquer sur OK pour faire disparaître la boîte
Méthode confirm()
permet à l’utilisateur de choisir entre les boutons OK et Annuler.
Méthode prompt()
La méthode prompt() permet à l’utilisateur de taper son propre message en
réponse à la question posée
La méthode document.write permet d ’écrire du code HTML dans la
page WEB
Entrée et sortie de données avec
JavaScript
<html>
<head>
<title> une page simple </title>
</head>
<body>
Bonjour
<script language='javascript'>
alert('bonjour');
document.write (
prompt('quel est votre nom ?','Indiquer votre nom ici')
);
confirm('quel bouton allez-vous choisir ?');
</script>
</body>
</html>
La structure d’un script en
JavaScript
La syntaxe du langage Javascript s'appuie sur le modèle de Java et C
Règles générales
1. L'insertion des espaces peut s'effectué n'importe où dans le script
Chaque commande doit être terminée par un point-virgule (;).
Un nombre à virgule est séparé par un point (.) et non par une virgule
Le langage Javascript y est sensible à la casse
Il existe deux méthodes permettant d'intégrer des commentaires à vos scripts.
Placer un double slash (//) devant le texte
Encadrer le texte par un slash suivi d'une étoile (/*) et la même séquence
inversée (*/)
Les variables (1)
Déclaration et affectation
$9&%
Cette fonction exécute un code Javascript à partir d'une chaîne de
caractères.
<<<
,:C*(DE2?!FG>!GH678&9&:./'017;22
I53.1'A32$9&%5&1'A3JK22L2222
#A.5@$31<IA/@5%&'/$<.&%.5%<9&%5$6")(3J#A.5@$31<IA/@5%&'/$<-&'-'$<9&%5$KM22N
,=:C*(DE;
<<<
,OP*Q2F!QH67IA/@5%&'/$7;
:&'-'--$R253$2$B0/$--'A32@&1ST@&1'U5$2V2,(FD>E2EWDH671$B172F!QH6-&'-'$2Q!X?HFGEY6Z[2:(+H6Z[;222
,(FD>E2EWDH67"511A372\!?>H67$9&%5&1'A3<72A3C%'.]67$9&%5&1'A3JK7;22
,(FD>E2EWDH671$B172F!QH6.&%.5%2Q!X?HFGEY6Z[2:(+H6Z[;
,=OP*Q;...
Les fonctions prédéfinies (2)
isFinite
Détermine si le parametre est un nombre fini. Renvoie false si ce n'est pas un
nombre ou l'infini positif ou infini négatif.
)<=)+)(.>?@;A,!!'.(*B'+.,('B.
isFinite("Un nombre") //retourne false
isNaN
parseInt
analyse une chaîne de caractères et retourne un nombre entier de la base
spécifiée.
La base peut prendre les valeurs 16 (hexadécimal) 10 (décimal), 8 (octal), 2
(binaire).
3&',+BE.'*7D8?GD4
3&',+*EF'.79&'<.=%*&(>+BE.'*A4,//retourne le nombre 125
3&',9'):7H;2IG4
var arrondi = parseInt(prix, 10); //retourne 30
Les fonctions prédéfinies (4)
Number
convertit l'objet spécifié en valeur numérique
3&',0*B',7,+.J,"&(.>D".$.EF.',8I/,8KKG,;HL?@L;;DA4!!$*+3.')(,%&,-&(.,.+,E)%%)<.$*+-.<
alert (Number(jour));
String
convertit l'objet spécifié en chaîne de caractères
0*B',7,+.J,"&(.>@H;;G@MMH?8GA4!!N*+3.'()(,%.,+*EF'.,.+,-&(.,O*)<,0*B'/,5++#..,.($2
alertEscape
(String(jour));
retourne la valeur hexadécimale à partir d'une chaîne de caractère codée en
ISO-Latin-1.
escape("!&") !!'.(*B'+.,P?8P?MP
Les Objets (1)
Les objets de JavaScript, sont soit des entités pré définies du langage,
soit créés par le programmeur.
Par exemple, le navigateur est un objet qui s'appelle "navigator".
La fenêtre du navigateur se nomme "window"
La page HTML est un autre objet, que l'on appelle "document".
Un formulaire à l'intérieur d'un "document", est aussi un objet.
Un lien hypertexte dans une page HTML, est encore un autre objet. Il s'appelle "link". etc...
Les objets javascript peuvent réagir à des "Evénements".
Tous les navigateurs ne supportent pas les mêmes objets
X--8& .67 >(+>(*:):& ,Y6% +@M')
9A'15/$<.A5%$5/<9&%5$
9A'15/$<.A5%$5/<9&%5$2629$/1$2
Les objets (2)
L’opérateur New
L'opérateur new est utilisé pour créer une nouvelle instance ou
un nouveau type d'objet défini par l'utilisateur ou de l'un des
types d'objets prédéfinis, Array, Boolean, Date, Function, Image,
Number, Object, ou String.
1%4)"3L%CB". Q 1"V .N-"L%CB".W-(+(9".+"/X
9&/2'262^M
1_0$AI 'M2==/$1A5/3$235@"$/
9&/21'1/$67?$-2/&'-'3-2#$2%&2.A%`/$7M
1_0$AI 1'1/$M2==/$1A5/3$2-1/'34
9&/2aA5/2623$b2c&1$JKM
1_0$AI aA5/M2==/$1A5/3$2A"a$.1
9&/2.SA'B2621/5$M22222221_0$AI .SA'BM2==/$1A5/3$2"AA%$&3
9&/2.&-26235%%M222222221_0$AI .&-M2==/$1A5/3$2A"a$.1
1_0$AI 0&/-$O%A&1M2==/$1A5/3$2I53.1'A3
1_0$AI Q&1SM2==/$1A5/3$2A"a$.12J(H2d<ef2F:2g<ef2F:2Z<hif2P0$/&2g<ef2P0$/&2d<e
typeof Math; //retourne function NS 3.*, Opera 3.*
L'objet String (1)
Propriété :
length : retourne la longueur de la chaîne de caractères;
Méthodes :
anchor( ) : formate la chaîne avec la balise <A> nommée;
b( ) : formate la chaîne avec la balise <B>;
big( ) : formate la chaîne avec la balise <BIG>;
charAt( ) : renvoie le caractère se trouvant à une certaine position;
charCodeAt( ) : renvoie le code du caractère se trouvant à une certaine position;
concat( ) : permet de concaténer 2 chaînes de caractères;
fromCharCode( ) : renvoie le caractère associé au code;
indexOf( ) : permet de trouver l'indice d'occurrence d'un caractère dans une chaîne;
L'objet String (2)
italics( ) : formate la chaîne avec la balise <I>;
lastIndexOf( ) : permet de trouver le dernier indice d'occurrence d'un caractère;
link( ) : formate la chaîne avec la balise <A> pour permettre de faire un lien;
slice( ) : retourne une portion de la chaîne;
substr( ) : retourne une portion de la chaîne;
substring( ) : retourne une portion de la chaîne;
toLowerCase( ) : permet de passer toute la chaîne en minuscule;
toUpperCase( ) : permet de passer toute la chaîne en majuscules;
L'objet Array
Propriété :
length : retourne le nombre d'éléments du tableau;
Méthodes :
concat( ) : permet de concaténer 2 tableaux;
join( ) : converti un tableau en chaîne de caractères;
reverse( ) : inverse le classement des éléménts du tableau;
slice( ) : retourne une section du tableau;
sort( ) : permet le classement des éléments du tableau;
L'objet Math (1)
Propriétés :
E : renvoie la valeur de la constante d'Euler (~2.718);
LN2 : renvoie le logarithme népérien de 2 (~0.693);
LN10 : renvoie le logarithme népérien de 10 (~2.302);
LOG2E : renvoie le logarithme en base 2 de e (~1.442);
LOG10E : renvoie le logarithme en base 10 de e (~0.434);
PI : renvoie la valeur du nombre pi (~3.14159);
SQRT1_2 : renvoie 1 sur racine carrée de 2 (~0.707);
SQRT2 : renvoie la racine carrée de 2 (~1.414);
L'objet Math (2)
Méthodes :
abs( ), exp( ), log(), sin( ), cos( ), tan( ), asin( ), acos( ), atan( ), max( ), min( ), sqrt( )
sont les opérations mathématiques habituelles;
atan2( ) : retourne la valeur radian de l'angle entre l'axe des abscisses et un
point;
ceil( ) : retourne le plus petit entier supérieur à un nombre;
floor( ) : retourne le plus grand entier inférieur à un nombre;
pow( ) : retourne le résultat d'un nombre mis à une certaine puissance;
random( ) : retourne un nombre aléatoire entre 0 et 1;
round( ) : arrondi un nombre à l'entier le plus proche.
L'objet Date (1)
Propriété : aucune;
Méthodes :
getFullYear( ), getYear( ), getMonth( ), getDay( ), getDate(), getHours( ),
getMinutes( ), getSeconds( ), getMilliseconds( ): retournent respectivement l'année
complète, l'année (2chiffres), le mois, le jour de la semaine, le jour du mois,
l'heure, les minutes, les secondes et les millisecondes stockés dans l'objet Date;
getUTCFullYear( ), getUTCYear( ), … retournent respectivement l'année complète,
l'année (2chiffres), … stockés dans l'objet Date en temps universel;
setFullYear( ), setYear( ), … remplacent respectivement l'année complète, l'année
(2chiffres), … dans l'objet Date;
L'objet Date (2)
<HTML><BODY
onLoad="window.document.formulaire.zone.value='Bonjour';">
<FORM name="formulaire"><INPUT NAME="zone" TYPE="text">
Si le nom de la fenêtre est omis, le navigateur utilisera par défaut la fenêtre
</FORM></BODY></HTML>
courante
Dans le cas de cadres (frames), il est pertinent de donner le nom de la
fenêtre
Il est possible aussi d’omettre window.document : l’adressage réussi
puisqu’il n’y a qu’un seul objet « document» dans la fenêtre
Programmation Web
Avancée avec
JavaScript
Plan du module
Ο
JS, une technologie client
Serveur Web
www.twitter.com
3 Réponse http
4 2
Frameworks JavaScript
UUII
22DD/3/3DD
three.js Matters.js
Pixi.js Babylon.js
Voxel.js
Les alternatives à JavaScript
● Variable locale
Ο Une variable déclarée à l'interieur d'une fonction est
seulement accessible dans cette fonction
● Variable globale
Ο Une variable déclarée en dehors de toute fonction est
accessible en tout point du script et de la page
● Cycle de vie d'une variable
Ο Une variable locale est supprimée lorsque la fonction
se termine
Ο Une variale globale est supprimée à la fermeture de la
page
Exemple illustratif
function getLocalTVA(country) {
var tva; //variable locale à la fonction. Vaut undefined à cet instant
if (country == 'FR') {
tva = 19.6;
} else if (country == 'EN') {
tva = 20.0;
}
return tva;
}
function applyFrenchTax() {
price = price * (1 + getLocalTVA('FR') / 100.0); //appel de la fonction #1
} //qui agit sur la variable globale
● Exceptions
Ο Encadrer les portions de code susceptibles de poser
problème et traiter l'erreur le cas échéant.
● Bloc try/catch
try
{
//Run some code here
}
catch(err)
{
//Handle errors here
}
Programmation Objet ?
● Orientation objet
Ο Beaucoup de chose dans le langage est considéré
comme objet (dont les fonctions !)
● Paradigme objet
Ο Un objet est décrit par ses propriétés et ses méthodes
Ο Accès aux propriétés et méthodes par un point '.'
Ο Auto-référence avec this
Ο Visibilité des propriétés et méthodes : public/privé
● Absence du concept de classe
Ο On ne peut pas définir de classes d'objets
Objets primitifs
typeof(nom_variable)
● A défaut de classe...
Ο Duplication des méthodes entre objets semblables !
● Peu performant : empreinte mémoire accrue
Ο Il faudrait un mécanisme pour partager les méthodes
● ...on utilise un "prototype"
Ο Propriété des objets du type spécial Function
Ο Le contenu d'un prototype (i.e. d'autres fonctions) peut
être réutilisé par les fonctions entre elles
● L'héritage devient possible
● Redéfinition et surcharge de méthode supportées
Prototype : exemple
this.pleurer = function() {
console.log('Je pleure');
}
this.manger = function() {
console.log('Je mange');
}
}
Chaque objet
possède ses
propriétés et
méthodes
location document history navigator screen
DOM
Entrée/sortie
Exercice :
//affiche dans la console le nom de code du navigateur utilisé ●Quels sont
les propriétés ?
//redirige le navigateur vers une adresse quelconque ●Quelles sont
<!DOCTYPE html>
<html>
<head>
<title>Bienvenue</title>
<script type="text/javascript" src="./essai.js"></script>
</head>
<body>
<p id="intro">
Pour me contacter : <a href="mailto:">cliquez ici</a>
<ul>
<li>Uniquement en semaine</li>
</ul>
</p>
<h1>S'inscrire à la Newsletter</h1>
<form>
<input type="text" name="news_email"/>
</form>
</body>
</html>
Arbre du document XHTML
<html> </html>
<title> </title> <script> </script> <p> </p> <h1> </h1> <form> </form>
#text(11) <li></li>
#text(21)
Propriétés d'un nœud
Popriétés Commentaires
childNodes nœuds enfants (Array) Selon le véritable
type html de l'objet,
firstChild premier nœud enfant des propriétés
et méthodes
lastChild dernier nœud enfant spécifiques sont
disponibles
nextSibling prochain nœud d'un type (nœud de
même niveau)
parentNode nœud parent
previousSibling nœud précédent d'un type (nœud
de même niveau)
nodeName nom du nœud
nodeValue valeur / contenu du nœud
nodeType type du nœud
innerHTML contenu littéral html du noeud
Navigation dans l'arbre DOM
parentNode
<html> </html>
firstChild lastChild
childNodes
Méthodes Commentaires
createElement() Méthode pour créer un nouvel élément
HTML dans le document (div, p, span, a,
form, input, etc…).
createTextNode() Méthode pour créer un nœud texte.
appendChild() Pour ajouter l'élément créé dans le
document. L'élément sera ajouté comme
étant le dernier nœud enfant d'un
élément parent.
insertBefore() Pour ajouter l'élément créé avant un
autre nœud.
removeChild() Pour supprimer un nœud.
Accès direct aux nœuds
Il existe aussi
Accès par navigation dans l'arbre querySelector()
Objets HTML