• Aucun résultat trouvé

Encodage, encore et toujours

N/A
N/A
Protected

Academic year: 2022

Partager "Encodage, encore et toujours"

Copied!
19
0
0

Texte intégral

(1)

Javascript

Stefan Monnier IFT-1005 1

(2)

Javascript

Langage de programmation fonctionnel et orient ´e objet Pr ´esent dans la majorit ´e des navigateurs web

Permet de manipuler

Le contenu d’une page web une fois charg ´ee

Certaines parties du browser

Valider les champs d’un formulaire Et ce, depuis la page elle-m ˆeme

(3)

Inclusion dans une page web

Par l’interm ´ediaire de balises script

Autant dans le head que le body

<script src="{URL}" />

ou

<script> {code-javascript} </script>

L’attribut type est text/javascript par d ´efaut

D’autres valeurs peuvent sp ´ecifier une version particuli `ere de Javascript Ou d’autres langages, selon le navigateur

Stefan Monnier IFT-1005 3

(4)

Encodage, encore et toujours

Comment inclure un ‘<’ dans le script?

Bien s ˆur, m ˆeme question pour l’ ´el ´ement style

(5)

Encodage, encore et toujours

Comment inclure un ‘<’ dans le script?

Bien s ˆur, m ˆeme question pour l’ ´el ´ement style

C¸ a d ´epend! En XML ou HTML?

Stefan Monnier IFT-1005 4

(6)

Encodage, encore et toujours

Comment inclure un ‘<’ dans le script?

Bien s ˆur, m ˆeme question pour l’ ´el ´ement style

C¸ a d ´epend! En XML ou HTML?

En HTML, un ‘<’ fonctionne tr `es bien En XML, il faut utiliser ‘&lt;

¡ Mais ‘&lt;’ ne fonctionne pas en HTML !

(7)

Le monde merveilleux des hacks

Mettre un ‘<’ dans un script ou style

Qui fonctionne autant avec XML qu’avec HTML Il nous faut CDATA et des commentaires

<![CDATA[...]]> (en XML) permet d’inclure du texte avec ‘<’, ‘&

<![CDATA[<]]> est ´equivalent `a &lt;

Stefan Monnier IFT-1005 5

(8)

Le monde merveilleux des hacks

Mettre un ‘<’ dans un script ou style

Qui fonctionne autant avec XML qu’avec HTML Il nous faut CDATA et des commentaires

<![CDATA[...]]> (en XML) permet d’inclure du texte avec ‘<’, ‘&

<![CDATA[<]]> est ´equivalent `a &lt;

<script>

//<![CDATA[

...my script..

//]]>

</script>

(9)

Calculs en Javascript

var x1 = 5 + 6;

var x2 = x1 * 7;

var x3 = x2 - 6 / x1;

Stefan Monnier IFT-1005 6

(10)

Abstraire un calcul

var pi = 3.141592653589793;

function diameter (radius) { return radius * 2;

}

function circumference (radius) { return diameter(radius) * pi;

}

function area (x, y) { return x * y;

}

(11)

Chaˆınes de caract `eres

var name = "BuGit";

var version = 32;

var fullname = name + "-" + String(version);

var fn_length = fullname.length;

Encodage, comme toujours

Stefan Monnier IFT-1005 8

(12)

Expressions r ´eguli `eres

var re = /b(.*)t/i;

var match_data = fullname.match(re);

var matched_string = match_data[0];

var matched_subgroup = match_data[1];

(13)

Op ´erateurs de RegExp

re* R ´ep ´etition 0 ou plus re? 0 ou 1 fois

re+ R ´ep ´etition 1 ou plus

re1|re2 Accepte autant l’un que l’autre

[chars] N’importe lequel de ces caract `eres

chars] N’importe quel autre caract `ere

(re) Sous-groupe

Note: autre encodage d’une structure arborescente

Stefan Monnier IFT-1005 10

(14)

Objets

var bugit_descriptor = { name: "BuGit",

version: 32,

URL: "http://gitlab.com/monnier/bugit"

};

var bd = bugit_descriptor;

var n = bd.name;

bd.name = "Anonymous";

(15)

Constructors

function SoftDesc (name, version, URL) { this.name = name;

this.version = version;

this.URL = URL;

}

var bd = new SoftDesc ("BuGit", 32,

"http://gitlab.com/monnier/bugit")

Stefan Monnier IFT-1005 12

(16)

Constructors

function SoftDesc (name, version, URL) { this.name = name;

this.version = version;

this.URL = URL;

}

var bd = new SoftDesc ("BuGit", 32,

"http://gitlab.com/monnier/bugit") this: mot-cl ´e sp ´ecial qui contient “l’object courant”

(17)

M ´ethodes

function SoftDesc (name, version) { this.name = name;

this.version = version;

this.fullname = function () {

return this.name + "-" + this.version;

} }

var bd = new SoftDesc ("BuGit", 32);

var bfn = bd.fullname()

Stefan Monnier IFT-1005 13

(18)

D ´el ´egation

function SoftDesc (name, version) { this.name = name;

this.version = version;

}

SoftDesc.prototype.fullname = function () { return this.name + "-" + this.version;

}

var bd = new SoftDesc ("BuGit", 32);

var bfn = bd.fullname()

(19)

Fonctions Javascript

Plus complexes qu’il n’y paraˆıt Peuvent ˆetre utilis ´ees comme

Fonction

Constructeur

M ´ethode

Objet

Y compris tout `a la fois!

Stefan Monnier IFT-1005 15

Références

Documents relatifs

 L’ambiguïté syntaxique est un problème dans les langages de programmation car la sémantique est basée sur la syntaxe et la signification d’une phrase doit être unique.. 

Par exemple, les chercheurs du centre François Viète d'histoire des sciences et techniques de l'Université de Nantes proposent de venir dans les classes afin de partager

frame image, window, frame onMouseDown clic de la souris a, body, form, ... link, document, form onMouseMove mouvement de la souris a, body, form link, document, form. onMouseOut

The difference in power between typed regions and alias types is similar to the difference between destructive update and a simulation of it using functional update: when function-

Lorsque les entiers a et b sont “petits” en valeurs absolues, une solution particuli` ere de (⋆) peut ˆ etre trouv´ ee de tˆ ete (i.e., par tˆ atonnement) ; mais lorsque a et b

Echange effectu ´e pour chaque ´ ´el ´ement d’une page web El ´ement:

En cas de rupture de stock ou de changement de model un produit équivalent en qualité et caractéristiques pourra être

« nous autres+vous autres = tout ». On ne sait pas si, dans l’opinion de Rosier, l’ensemble supérieur contenant nous autres Espagnols peut être réellement ceux qui ne sont