SlideShare une entreprise Scribd logo
1  sur  38
Télécharger pour lire hors ligne
JQuery
Document original de François BONNEVILLE
francois@aricia.fr, Laboratoire d'Informatique
de l’Université de Franche-Comté,
ajouts par Michel Buffa, buffa@unice.fr, Université de Nice
Cours applications web M1 Miage 2011 2
De JavaScript… à jQuery
• La naissance de JavaScript
♦ 1995 : Brendan Eich développe pour Netscape
Communications Corporation, un langage de script, appelé
Mocha, puis LiveScript et finalement JavaScript
♦ Javascript est intégré dans le navigateur Netscape 2.
Succès immédiat.
• La guerre des navigateurs
♦ Netscape et Microsoft (avec JScript dans Internet
Explorer) ont développé leur propre variante de JavaScript
avec des fonctionnalités supplémentaires et incompatibles,
notamment dans la manipulation du DOM (modèle objet
du navigateur WEB)
♦ 1997 : Adoption du standard ECMAScript.
Les spécifications sont rédigées dans le document
Standard ECMA-262.
Cours applications web M1 Miage 2011 3
La naissance de la fondation Mozilla
• Netscape perd des parts de marché face à Microsoft
• Malgré un procès pour concurrence déloyale, Netscape,
racheté par AOL est dissoute en 2004
• Netscape, dans ses dernières forces, fonde la fondation
principauté Mozilla, et lui livre le code source de Netscape
Navigator 5, qui contient les premières briques du moteur de
rendu Gecko (aujourd’hui au coeur de Firefox).
• Actuellement, les navigateurs web modernes supportent tous
les spécifications ECMAScript
• Mais chacun a étendu les spécifications pour utiliser au mieux
son propre navigateur, ce qui a amené à des différences
d’implémentation suivant le navigateur…
Cours applications web M1 Miage 2011 4
JavaScript devenu incontournable
• Les spécifications ECMAScript ont permis de
pérenniser JavaScript
• JavaScript permet de contrôler quasiment tous les
paramètres d’une page WEB
• C’est le seul langage, coté client, capable de changer
dynamiquement l’aspect d’une page WEB
• Avec l’arrivée de l’objet XMLHttpRequest
permettant le développement d’applications AJAX,
JavaScript est devenu incontournable dans le
développement d’interfaces WEB évoluées (WEB2.0)
Cours applications web M1 Miage 2011 5
Les premiers « Frameworks »
• Comme il était devenu difficile de coder du javascript
pour tous les navigateurs, sont apparus des
« Frameworks » permettant une spécification unique,
indépendante du navigateur
♦ PrototypeJS - www.prototypejs.org
script.aculo.us
♦ Mootools - mootools.net
♦ DoJo Toolkit - www.dojotoolkit.org
♦ Yahoo UI - developer.yahoo.com/yui/
♦ ExtJS - www.extjs.com
♦ UIZE - www.uize.com
Cours applications web M1 Miage 2011 6
JQuery
• Une bibliothèque javascript open-source et cross-
browser
• Elle permet de traverser et manipuler très facilement
l'arbre DOM des pages web à l'aide d'une syntaxe
fortement similaire à celle d'XPath.
• JQuery permet par exemple de changer/ajouter une
classe CSS, créer des animations, modifier des
attributs, etc.
• Gérer les événements javascript
• Faire des requêtes AJAX simplement
John Resig
• John Resig est un développeur d’outils
JavaScript pour Mozilla Corporation et auteur
du livre Pro JavaScript Techniques. Il est
également le créateur et développeur principal
de la jQuery JavaScript library.
• Il vit à Boston, MA. Il a publié son second livre
: Secrets of the JavaScript Ninja, en 2009.
• Il a porté le langage processing en javascript
l’année dernière (http://processingjs.org/),
• Il a créé également jQuery Mobile
(http://jquerymobile.com/)
• Microsoft et Nokia incluent jQuery sur leurs
plateformes,[1] Microsoft dansVisual Studio[2]
pour l’utiliser avec les frameworks ASP.NET
AJAX et ASP.NET MVC Framework alors que
Nokia l’a intégré dans sa plateformeWeb Run-
Time.
Ce que jQuery n’est pas
• Un substitut pour apprendre JavaScript
♦ jQuery est très puissant et très pratique, mais vous devez
néanmoins connaitre les bases de Javascript, notamment la
partie “objet” du langage.
♦ Voir des vlivres comme :
“Object Oriented Javascript de Stoyan Stefanov” ou
“jQuery, novice to ninja” (google est votre ami)
• Une réponse à tout
♦ Utilisez jQuery uniquement lorsque c’est nécessaire. On
commence toujours par HTML+CSS avant de chercher
des plugins jQuery magiques.
♦ De nombreuses UI sont pures html+CSS
Cours applications web M1 Miage 2011 9
une simple bibliothèque à importer
• Disponible sur le site de Jquery
http://jquery.com/
<script type="text/javascript"
src="jquery.js"></script>
• Ou directement sur Google code
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.
js">
</script>
Cours applications web M1 Miage 2011 10
La fonction jQuery()
• jQuery repose sur une seule fonction :
jQuery() ou $().
• C’est une fonction JavaScript
• Elle accepte des paramètres
• Elle retourne un objet
• $ : Syntaxe issue de « Prototype »
Cours applications web M1 Miage 2011 11
Selecteur magique : $('anything') !
• $ accepte un sélecteur CSS en argument
• $ accepte des ID :
♦$('#nomID') retourne un élément <->
document.getElementById
• $ accepte des classes :
♦$('.nomClasse') retourne tous les éléments qui
correspondent à cette classe
• $ accepte plusieurs sélecteurs
♦$('.article, .nouvelles, .edito')
Cours applications web M1 Miage 2011 12
$(anything)
• $ accepte des sélecteurs spécifiques :
♦ $(':radio'), $(':header'), $(':first-child')
• des sélecteurs en forme de filtres :
♦ $(':checked'), $(':odd'), $(':visible')
♦ plus fort: $(':contains(du texte)')
• des attributs
♦ $('a[href]'), $('a[href^=http://'), $('img[src$=.png]'
Rappel sur le DOM
• “Le Document Object Model (DOM) est une
convention cross-platform et independente du langage
pour representier and interagir avec des objets dans
des documents en HTML, XHTML ou XML.
Cours applications web M1 Miage 2011 14
Exemple de manipulation du DOM
<html>
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/
jquery/1/jquery.min.js">
</script>
<body>
<div id="monDiv">Bonjour</div>
<a href="#" onClick="$('#monDiv').hide();">
disparition</a>
</body>
</html>
Cours applications web M1 Miage 2011 15
jQuery: un objet
• les méthodes s'appliquent généralement à tous les éléments
sélectionnés
♦ $('.classe').hide();
♦ $('.classe').show();
• de nombreuses méthodes utilitaires
♦ parcourir le DOM: .parent(), .next(), .children(), .parents()
♦ ajouter ou retirer des classes CSS: addClass, removeClass
♦ manipuler: append, wrap, prepend
• Intérêt fondamental: la plupart des méthodes de l'objet
retournent l'objet lui-même
♦ on peut chaîner les appels !
♦ $('anything').parent().find('still anything').show();
♦ Cette propriété est extrêmement puissante !
Nombreux exemples interactifs
• Les selecteurs jQuery sont illustrés par de nombreux
tutoriaux interactifs, par exemple :
♦ Ici :
http://www.w3schools.com/jquery/jquery_examples.asp
♦ Et là :
http://docs.jquery.com/Tutorials:Live_Examples_of_jQuer
y
Cours applications web M1 Miage 2011 16
jQuery example d’utilisation 1
<ul>
<li style=“background:red;”>
<span>Changed</span>
First item
</li>
<li>
Second item
</li>
<li style=“background:red;”>
<span>Changed</span>
Third item
</li>
</ul>
<ul>
<li>
First item
</li>
<li>
Second item
</li>
<li>
Third item
</li>
</ul>
<ul>
<li>
<span>Changed</span>
First item
</li>
<li>
Second item
</li>
<li>
<span>Changed</span>
Third item
</li>
</ul>
$(“li:odd”).prepend(‘<span>Changed</span>’).css({background:“red”});
jQuery example d’utilisation 2
<div>
<span class=“foo”>
Some text
</span>
</div>
<div style=“display:none”>
<span>
More text
</span>
<span class=“foo”>
</span>
</div>
<div>
<span class=“foo”>
Some text
</span>
</div>
<div style=“display:none”>
<span>
More text
</span>
<span class=“foo”>
Goodbye cruel world.
</span>
</div>
<div>
<span class=“foo”>
Some text
</span>
</div>
<div style=“display:none”>
<span>
More text
</span>
<span class=“foo”>
Goodbye cruel world.
</span>
</div>
$(“div:hidden”).find(“.foo”).empty().text(“Changed”).end().show();
<div>
<span class=“foo”>
Some text
</span>
</div>
<div style=“display:block”>
<span>
More text
</span>
<span class=“foo”>
Changed
</span>
</div>
<div>
<span class=“foo”>
Some text
</span>
</div>
<div style=“display:none”>
<span>
More text
</span>
<span class=“foo”>
Changed
</span>
</div>
<div>
<span class=“foo”>
Some text
</span>
</div>
<div style=“display:none”>
<span>
More text
</span>
<span class=“foo”>
Changed
</span>
</div>
Determiner si une checkbox est cochée
If ($(‘#total’).attr(‘checked’)) {
//Traitement si cochée
}
else {
//Traitement si non cochée
}
jQuery example d’utilisation 3
Intercepter le bouton submit d’un formulaire :
$(document).ready(function() {
$(‘#ok’).submit(function() {
if ($(‘#login’).val() ==‘’) {
alert (‘Entrer un login’);
return false;
}
})
});
jQuery example d’utilisation 4
Effacer le contenu d’un champs de texte lorsqu’il
a le focus
<input name=“nom” type=“text” id=“nom”
value=“Entrez votre nom”>
$(‘#nom’).focus(function() {
var field = $(this);
field.val(‘’);
});
jQuery example d’utilisation 5
Tester le clic sur n’importe quel bouton
radio :
$(‘:radio’).click(function() {
//do stuff
});
Donner le focus au premier élément d’un
formulaire:
$(‘nom’).focus;
jQuery example d’utilisation 6
jQuery example d’utilisation 7
<div>
<span class=“all”>Select All</span>
<span class=“none”>Select None</span>
<input name=“chk1” type=“checkbox”/>
<input name=“chk2” type=“checkbox”/>
<input name=“chk3” type=“checkbox”/>
</div>
<div>
<span class=“all”>Select All</span>
<span class=“none”>Select None</span>
<input name=“chk4” type=“checkbox”/>
<input name=“chk5” type=“checkbox”/>
<input name=“chk6” type=“checkbox”/>
</div>
$(“span.none”).click(
function(){
$(this).siblings(“:checkbox”).removeAttr(“checked”);
}
);
$(“span.all”).click(
function(){
$(this).siblings(“:checkbox”).attr(“checked”,“checked”);
}
);
$(“span”).click(
function(){
if($(this).text()==“Select All”))
$(this).siblings(“:checkbox”).attr(“checked”,“checked”);
else if ($(this).attr(“class”)==“none”)
$(this).siblings(“:checkbox”).removeAttr(“checked”);
}
);
or
Cours applications web M1 Miage 2011 24
Ajax
• JQuery possède toute une panoplie de fonctions
permettant de simplifier les requêtes Ajax
• La plus simple :
$('#maDiv').load('page.html');
• Plus complexe :
$.get('test.html',
function(data) {faire quelque chose);
• Générale : $.ajax({
url: 'document.xml',
type: 'GET',
dataType: 'xml',
timeout: 1000,
error: function(){alert('Erreur chargement'); },
success: function(xml){faire quelque chose}
});
Tutorial ajax/jQuery très complet !
• Ici : http://viralpatel.net/blogs/2009/04/jquery-ajax-
tutorial-example-ajax-jquery-development.html
Cours applications web M1 Miage 2011 25
jQuery AJAX Exemple
<html>
<head>
<title>AJAX Demo</title>
<script type=“text/javascript” src=“jquery.js”>
</script>
<script type=“text/javascript”>
var cnt = 0;
$(function(){
$.ajaxSettings({
error:function(){alert(“Communication error!”);}
});
$(“:button”).click(function(){
var input = {in:$(“:textbox”).val(),count:cnt};
$.getJSON(“ajax.php”,input,function(json){
cnt = json.cnt;
$(“.cnt”).text(cnt)
$(“.msg”).text(json.out);
});
});
});
</script>
</head>
<body>
<p>
Input:
<input type=“textbox”/>
<input type=“button” value=“Send”/>
Output #
<span class=“cnt”></span>:
<span class=“msg”></span>
</p>
</body>
</html>
<?php
$output = ‘’;
switch($_REQUEST[‘in’]) {
case ‘hello’:
$output = ‘Hello back.’;
break;
case ‘foo’:
$output = ‘Foo you, too.’;
break;
case ‘bar’:
$output = ‘Where Andy Capp can be found.’;
break;
case ‘foobar’:
$output = ‘This is German, right?’;
break;
default:
$output = ‘Unrecognized string.’;
}
$count = $_REQUEST[‘count’]+1;
echo json_encode(
array(
‘out’ => $output,
‘cnt’ => $count
)
);
exit;
?>
jQuery AJAX Fonctions
• $.func(url[,params][,callback])
♦ $.get
♦ $.getJSON
♦ $.getIfModified
♦ $.getScript
♦ $.post
• $(selector), inject HTML
♦ load
♦ loadIfModified
• $(selector), ajaxSetup alts
♦ ajaxComplete
♦ ajaxError
♦ ajaxSend
♦ ajaxStart
♦ ajaxStop
♦ ajaxSuccess
• $.ajax, $.ajaxSetup
♦ async
♦ beforeSend
♦ complete
♦ contentType
♦ data
♦ dataType
♦ error
♦ global
♦ ifModified
♦ processData
♦ success
♦ timeout
♦ type
♦ url
Cours applications web M1 Miage 2011 28
Inconvénients d’AJAX / XML
• XML est délicat à parser en Javascript/jQuery
$.ajax({ type: "GET", url: "courses.xml",
dataType: "xml",
complete : function(data, status)
{ var products = data.responseXML;
var html = "";
$(products).find('product').each(function(){
var id = $(this).attr('id');
var name = $(this).find('name').text();
var price =$(this).find('price').text();
html += "<li>#"+id
+" - <strong>"+name+"</strong> : "
+price+"</li>"; });
$("#cousesList").html(html); }});
Cours applications web M1 Miage 2011 29
Inconvénients d’AJAX / Sécurité
• pour des raisons de sécurité, les navigateurs
interdisent de faire du « cross-domain » avec
XMLHttpRequest dont le résultat serait du
XML (et donc du HTML)
….mais pas pour des scripts Javascript !
• D’où l’idée de définir un modèle de données
sous la forme d’objet Javascript
♦JSON
• Voir : http://www.jsonpexamples.com/
Cours applications web M1 Miage 2011 30
JSON (JavaScript Object Notation)
• format de données textuel, générique, dérivé de la notation des
objets de JavaScript
• permet de représenter de l'information structurée.
• décrit par la RFC 4627 de l’IETF.
• Exemple :
{ "Image": {
"Width": 800,
"Height": 600,
"Title": "Vue du 15ème étage",
"Thumbnail": {
"Url": "http://www.example.com/481989943",
"Height": 125,
"Width": "100" },
"IDs": [116, 943, 234, 38793]
} }
Cours applications web M1 Miage 2011 31
Les avantages de JSON
• Type de données générique et abstrait pouvant
♦ être représenté dans n'importe quel langage de programmation
♦ représenter n'importe quelle donnée concrète.
• simple à mettre œuvre tout en étant complet.
• peu verbeux, lisible aussi bien par un humain que par une
machine
• facile à apprendre, syntaxe réduite
• types de données sont connus et simples à décrire
• indépendant du langage de programmation (bien qu'utilisant
une notation JavaScript)
• Le type MIME application/json est utilisé pour le transmettre
par le protocole HTTP (notamment en Ajax)
♦ Standard dans les web services .Net, Java EE, etc.
Cours applications web M1 Miage 2011 32
Les avantages de JSON
• Vis-à-vis de JavaScript, un document JSON
représente un objet, d'où son nom. Il est donc plus
facile à interpréter qu'un XML.
var donnees = eval('('+donnees_json+')');
• Le site json.org fournit une liste de parseurs pour
d'autres langages
• Il peut aussi être utilisé pour :
♦ la sérialisation et déserialisation d'objets ;
♦ l’encodage de documents ;
Cours applications web M1 Miage 2011 33
jQuery et JSON
jQuery.getJSON( url, [ data ],
[ callback(data, textStatus) ] )
Exemple :
<html><head>
<script src="jquery.min.js"></script>
</head>
<body>
<div id="images" style="height: 300px"></div>
<script>
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tag
s=besancon&tagmode=any&format=json&jsoncallback=?",
function(data){
$.each(data.items, function(i,item){
$("<img/>").attr("src", item.media.m).appendTo("#images");
if ( i == 3 ) return false;
});
});
</script>
</body></html>
Cours applications web M1 Miage 2011 34
jQuery UI
• http://jqueryui.com/
• Un ensemble de composants graphiques téléchargeable à
l'adresse http://jqueryui.com/download.
♦ un noyau (Core)
♦ des « comportements » (interactions)
draggable : pour glisser-déplacer un élément
http://jqueryui.com/demos/draggable/
droppable : pour « déposer » un élément
http://jqueryui.com/demos/droppable/
resizable : pour redimensionner un élément
http://jqueryui.com/demos/resizable/
selectable : pour sélectionner des éléments à la souris
http://jqueryui.com/demos/selectable/
sortable : pour trier des éléments
http://jqueryui.com/demos/selectable/
Cours applications web M1 Miage 2011 35
jQuery UI
♦ des « widgets »
« accordéon » http://jqueryui.com/demos/accordion/
« calendrier » http://jqueryui.com/demos/datepicker/
boîte de dialogue http://jqueryui.com/demos/dialog/
barre de progression http://jqueryui.com/demos/progressbar/
curseur http://jqueryui.com/demos/slider/
onglets http://jqueryui.com/demos/tabs/
♦ des « effets »
http://jqueryui.com/demos/effect/
Clignotement, disparition, apparition, éclatement, transition…
• Une collection de thèmes
http://jqueryui.com/themeroller/
Cours applications web M1 Miage 2011 36
jQuery Plugins
• On peut étendre facilement jQuery en utilisant des « plugins »
• Les méthodes ajoutées sont au même niveau que les méthodes
natives
• Ils conservent les mêmes sémantiques que les méthodes
natives: retourner l'objet jQuery, appliquer la méthode à tous
les éléments représentés
• Des centaines plugins existent d'ores et déjà, de qualité
variable; certains mis en avant par l'équipe de développement
• http://plugins.jquery.com/
♦ des menus
http://apycom.com/
http://www.wizzud.com/jqDock/
♦ Galerie photo : VisualLightbox
http://visuallightbox.com
Cours applications web M1 Miage 2011 37
Conclusion
• jQuery est un framework complet et facile à utiliser
• Bibliothèque légère à charger
• Simplifier et unifie la syntaxe d’accès au DOM
• Permet de faire des requètes AJAX simplement
• UI et nombreux plugins complémentaires
• D’autres frameworks sont disponibles et ne sont pas à
oublier : il est possible de combiner les frameworks
♦ Dojo recommandé pour application riche en widgets et
nécessitant une forte cohérence (widgets MVC
notamment)
jQuery ressources intéressantes
• Site officiel
♦ http://www.jquery.com
• Learning Center
♦ http://docs.jquery.com/Tutorials
♦ http://www.learningjquery.com/
♦ http://15daysofjquery.com/
♦ http://www.roseindia.net/ajax/jquery/
• Support
♦ http://docs.jquery.com/Discussion
♦ http://www.nabble.com/JQuery-f15494.html mailing list archive
♦ irc.freenode.net irc room: #jquery
• Documentation
♦ http://docs.jquery.com/Main_Page
♦ http://www.visualjquery.com
♦ http://jquery.bassistance.de/api-browser/
• jQuery Success Stories
♦ http://docs.jquery.com/Sites_Using_jQuery

Contenu connexe

Tendances

Cours php & Mysql - 5éme partie
Cours php & Mysql - 5éme partieCours php & Mysql - 5éme partie
Cours php & Mysql - 5éme partiekadzaki
 
Un exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHPUn exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHPKristen Le Liboux
 
Ajax et Accessibilite
Ajax et AccessibiliteAjax et Accessibilite
Ajax et Accessibilitemikeh
 
Introduction à Angularjs
Introduction à AngularjsIntroduction à Angularjs
Introduction à AngularjsRossi Oddet
 
Ajax (Asynchronous JavaScript and XML)
Ajax (Asynchronous JavaScript and XML)Ajax (Asynchronous JavaScript and XML)
Ajax (Asynchronous JavaScript and XML)Abdelouahed Abdou
 
jQuery GTI780 & MTI780 ETS A09
jQuery   GTI780 & MTI780   ETS   A09jQuery   GTI780 & MTI780   ETS   A09
jQuery GTI780 & MTI780 ETS A09Claude Coulombe
 
Introduction à AngularJS
Introduction à AngularJSIntroduction à AngularJS
Introduction à AngularJSAbdoulaye Dieng
 
Utilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHPUtilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHPJean-Marc Fontaine
 
Introduction aux RIA (Rich Internet Applications)
Introduction aux RIA (Rich Internet Applications)Introduction aux RIA (Rich Internet Applications)
Introduction aux RIA (Rich Internet Applications)Tugdual Grall
 
Cours php & Mysql - 4éme partie
Cours php & Mysql - 4éme partieCours php & Mysql - 4éme partie
Cours php & Mysql - 4éme partiekadzaki
 
Initiation au JavaScript
Initiation au JavaScriptInitiation au JavaScript
Initiation au JavaScriptStrasWeb
 

Tendances (20)

Cours php & Mysql - 5éme partie
Cours php & Mysql - 5éme partieCours php & Mysql - 5éme partie
Cours php & Mysql - 5éme partie
 
Un exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHPUn exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHP
 
jQuery
jQueryjQuery
jQuery
 
Introduction à React
Introduction à ReactIntroduction à React
Introduction à React
 
Ajax et Accessibilite
Ajax et AccessibiliteAjax et Accessibilite
Ajax et Accessibilite
 
Introduction à Angularjs
Introduction à AngularjsIntroduction à Angularjs
Introduction à Angularjs
 
Spring & SpringBatch FR
Spring & SpringBatch FRSpring & SpringBatch FR
Spring & SpringBatch FR
 
Ajax (Asynchronous JavaScript and XML)
Ajax (Asynchronous JavaScript and XML)Ajax (Asynchronous JavaScript and XML)
Ajax (Asynchronous JavaScript and XML)
 
Maven
MavenMaven
Maven
 
Apprenez le jQuery
Apprenez le jQueryApprenez le jQuery
Apprenez le jQuery
 
JQuery
JQueryJQuery
JQuery
 
jQuery GTI780 & MTI780 ETS A09
jQuery   GTI780 & MTI780   ETS   A09jQuery   GTI780 & MTI780   ETS   A09
jQuery GTI780 & MTI780 ETS A09
 
Introduction à AngularJS
Introduction à AngularJSIntroduction à AngularJS
Introduction à AngularJS
 
Utilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHPUtilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHP
 
Introduction aux RIA (Rich Internet Applications)
Introduction aux RIA (Rich Internet Applications)Introduction aux RIA (Rich Internet Applications)
Introduction aux RIA (Rich Internet Applications)
 
Php
PhpPhp
Php
 
Chapitre 4 Java script
Chapitre 4 Java scriptChapitre 4 Java script
Chapitre 4 Java script
 
Cours php & Mysql - 4éme partie
Cours php & Mysql - 4éme partieCours php & Mysql - 4éme partie
Cours php & Mysql - 4éme partie
 
Django by mrjmad
Django by mrjmadDjango by mrjmad
Django by mrjmad
 
Initiation au JavaScript
Initiation au JavaScriptInitiation au JavaScript
Initiation au JavaScript
 

En vedette

Javascript un langage supérieur
Javascript un langage supérieurJavascript un langage supérieur
Javascript un langage supérieurFredy Fadel
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScriptMicrosoft
 
Présentation de ECMAScript 6
Présentation de ECMAScript 6Présentation de ECMAScript 6
Présentation de ECMAScript 6Julien CROUZET
 
Strategies et developpements mobiles multi-plates-formes.
Strategies et developpements mobiles multi-plates-formes.Strategies et developpements mobiles multi-plates-formes.
Strategies et developpements mobiles multi-plates-formes.DocDoku
 
Dojot formation-dojo-toolkit
Dojot formation-dojo-toolkitDojot formation-dojo-toolkit
Dojot formation-dojo-toolkitCERTyou Formation
 
Formation JavaScript full-stack (JS, jQuery, Node.js...)
Formation JavaScript full-stack (JS, jQuery, Node.js...)Formation JavaScript full-stack (JS, jQuery, Node.js...)
Formation JavaScript full-stack (JS, jQuery, Node.js...)guicara
 
Top 10 des meilleurs sites pour apprendre à coder - La fabrique du net
Top 10 des meilleurs sites pour apprendre à coder - La fabrique du netTop 10 des meilleurs sites pour apprendre à coder - La fabrique du net
Top 10 des meilleurs sites pour apprendre à coder - La fabrique du netLa-Fabrique-du-Net
 
Notions de base de JavaScript
Notions de base de JavaScriptNotions de base de JavaScript
Notions de base de JavaScriptKristen Le Liboux
 
Agile Dojo : L'art de Grandir en Equipe, Patrice Petit, Conférence Université...
Agile Dojo : L'art de Grandir en Equipe, Patrice Petit, Conférence Université...Agile Dojo : L'art de Grandir en Equipe, Patrice Petit, Conférence Université...
Agile Dojo : L'art de Grandir en Equipe, Patrice Petit, Conférence Université...Agilbee (Patrice Petit)
 
CARA Coding dojo - Golden Master
CARA Coding dojo - Golden MasterCARA Coding dojo - Golden Master
CARA Coding dojo - Golden Masterflorentpellet
 
INITIATION_JAVASCRIPT_NAB_2009
INITIATION_JAVASCRIPT_NAB_2009INITIATION_JAVASCRIPT_NAB_2009
INITIATION_JAVASCRIPT_NAB_2009Nabeledi Ouattara
 
Google Web Toolkit - GWT
Google Web Toolkit - GWTGoogle Web Toolkit - GWT
Google Web Toolkit - GWTmohamedmed1694
 
Dojo Mobile @ Devoxx France
Dojo Mobile @ Devoxx FranceDojo Mobile @ Devoxx France
Dojo Mobile @ Devoxx Francecjolif
 
Parisweb - javascript server side - par où commencer ?
Parisweb - javascript server side - par où commencer ?Parisweb - javascript server side - par où commencer ?
Parisweb - javascript server side - par où commencer ?Quentin Adam
 

En vedette (19)

Cours JavaScript
Cours JavaScriptCours JavaScript
Cours JavaScript
 
Javascript un langage supérieur
Javascript un langage supérieurJavascript un langage supérieur
Javascript un langage supérieur
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScript
 
Présentation de ECMAScript 6
Présentation de ECMAScript 6Présentation de ECMAScript 6
Présentation de ECMAScript 6
 
At2009 Coding Dojo ATDD
At2009 Coding Dojo ATDDAt2009 Coding Dojo ATDD
At2009 Coding Dojo ATDD
 
Strategies et developpements mobiles multi-plates-formes.
Strategies et developpements mobiles multi-plates-formes.Strategies et developpements mobiles multi-plates-formes.
Strategies et developpements mobiles multi-plates-formes.
 
Dojot formation-dojo-toolkit
Dojot formation-dojo-toolkitDojot formation-dojo-toolkit
Dojot formation-dojo-toolkit
 
Coding Dojo
Coding DojoCoding Dojo
Coding Dojo
 
Formation JavaScript full-stack (JS, jQuery, Node.js...)
Formation JavaScript full-stack (JS, jQuery, Node.js...)Formation JavaScript full-stack (JS, jQuery, Node.js...)
Formation JavaScript full-stack (JS, jQuery, Node.js...)
 
Top 10 des meilleurs sites pour apprendre à coder - La fabrique du net
Top 10 des meilleurs sites pour apprendre à coder - La fabrique du netTop 10 des meilleurs sites pour apprendre à coder - La fabrique du net
Top 10 des meilleurs sites pour apprendre à coder - La fabrique du net
 
Notions de base de JavaScript
Notions de base de JavaScriptNotions de base de JavaScript
Notions de base de JavaScript
 
Programmation sous Android
Programmation sous AndroidProgrammation sous Android
Programmation sous Android
 
Agile Dojo : L'art de Grandir en Equipe, Patrice Petit, Conférence Université...
Agile Dojo : L'art de Grandir en Equipe, Patrice Petit, Conférence Université...Agile Dojo : L'art de Grandir en Equipe, Patrice Petit, Conférence Université...
Agile Dojo : L'art de Grandir en Equipe, Patrice Petit, Conférence Université...
 
CARA Coding dojo - Golden Master
CARA Coding dojo - Golden MasterCARA Coding dojo - Golden Master
CARA Coding dojo - Golden Master
 
INITIATION_JAVASCRIPT_NAB_2009
INITIATION_JAVASCRIPT_NAB_2009INITIATION_JAVASCRIPT_NAB_2009
INITIATION_JAVASCRIPT_NAB_2009
 
Google Web Toolkit - GWT
Google Web Toolkit - GWTGoogle Web Toolkit - GWT
Google Web Toolkit - GWT
 
Dojo Mobile @ Devoxx France
Dojo Mobile @ Devoxx FranceDojo Mobile @ Devoxx France
Dojo Mobile @ Devoxx France
 
Introduction a jQuery
Introduction a jQueryIntroduction a jQuery
Introduction a jQuery
 
Parisweb - javascript server side - par où commencer ?
Parisweb - javascript server side - par où commencer ?Parisweb - javascript server side - par où commencer ?
Parisweb - javascript server side - par où commencer ?
 

Similaire à Cours JavaScript

Javascript & tools
Javascript & toolsJavascript & tools
Javascript & toolsSlim Soussi
 
jQuery - GTI780 & MTI780 - ETS - A08
jQuery - GTI780 & MTI780 - ETS - A08jQuery - GTI780 & MTI780 - ETS - A08
jQuery - GTI780 & MTI780 - ETS - A08Claude Coulombe
 
AngularJS et autres techno frontend
AngularJS et autres techno frontendAngularJS et autres techno frontend
AngularJS et autres techno frontendyllieth
 
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et MobileNouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et MobileIppon
 
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilité
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilitéNouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilité
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilitéJulien Dubois
 
Html5 par Florent Garin, au Toulouse JUG
Html5 par Florent Garin, au Toulouse JUGHtml5 par Florent Garin, au Toulouse JUG
Html5 par Florent Garin, au Toulouse JUGJUG Toulouse
 
Gwt oxiane-novae-lr
Gwt oxiane-novae-lrGwt oxiane-novae-lr
Gwt oxiane-novae-lroxmed
 
jQuery mobile / PhoneGap : contenus dynamiques client-side
jQuery mobile / PhoneGap : contenus dynamiques client-sidejQuery mobile / PhoneGap : contenus dynamiques client-side
jQuery mobile / PhoneGap : contenus dynamiques client-sidemaru.maru
 
Responsible Design ou Le web moderne à destination de tous
Responsible Design ou Le web moderne à destination de tousResponsible Design ou Le web moderne à destination de tous
Responsible Design ou Le web moderne à destination de tousjwajsberg
 
Confoo - 2012-02-27 au 2012-02-28 - HTML5 workshop
Confoo - 2012-02-27 au 2012-02-28 - HTML5 workshopConfoo - 2012-02-27 au 2012-02-28 - HTML5 workshop
Confoo - 2012-02-27 au 2012-02-28 - HTML5 workshopFrédéric Harper
 
Programmer en html5, css 3 et java script (70 480)
Programmer en html5, css 3 et java script (70 480)Programmer en html5, css 3 et java script (70 480)
Programmer en html5, css 3 et java script (70 480)Chamseddine Ouerhani
 
2014.12.11 - TECH CONF #3 - Présentation Bootstrap
2014.12.11 - TECH CONF #3 - Présentation Bootstrap2014.12.11 - TECH CONF #3 - Présentation Bootstrap
2014.12.11 - TECH CONF #3 - Présentation BootstrapTelecomValley
 
HTML5 W3C Conference Euratechnologie
HTML5 W3C Conference EuratechnologieHTML5 W3C Conference Euratechnologie
HTML5 W3C Conference Euratechnologiewyggio
 
Node.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascriptNode.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascriptKhalid Jebbari
 
La mobilité dans Drupal
La mobilité dans DrupalLa mobilité dans Drupal
La mobilité dans DrupalAdyax
 
Decouvrez CreateJS
Decouvrez CreateJSDecouvrez CreateJS
Decouvrez CreateJSFCHAPLIN
 
Présentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'OfflinePrésentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'OfflineDNG Consulting
 
Du JavaScript dans mon projet
Du JavaScript dans mon projetDu JavaScript dans mon projet
Du JavaScript dans mon projetjollivetc
 
jQuery Mobile & Applications Web
jQuery Mobile & Applications WebjQuery Mobile & Applications Web
jQuery Mobile & Applications WebNicolas Hoffmann
 

Similaire à Cours JavaScript (20)

Javascript & tools
Javascript & toolsJavascript & tools
Javascript & tools
 
Javascript proprement
Javascript proprementJavascript proprement
Javascript proprement
 
jQuery - GTI780 & MTI780 - ETS - A08
jQuery - GTI780 & MTI780 - ETS - A08jQuery - GTI780 & MTI780 - ETS - A08
jQuery - GTI780 & MTI780 - ETS - A08
 
AngularJS et autres techno frontend
AngularJS et autres techno frontendAngularJS et autres techno frontend
AngularJS et autres techno frontend
 
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et MobileNouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
 
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilité
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilitéNouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilité
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilité
 
Html5 par Florent Garin, au Toulouse JUG
Html5 par Florent Garin, au Toulouse JUGHtml5 par Florent Garin, au Toulouse JUG
Html5 par Florent Garin, au Toulouse JUG
 
Gwt oxiane-novae-lr
Gwt oxiane-novae-lrGwt oxiane-novae-lr
Gwt oxiane-novae-lr
 
jQuery mobile / PhoneGap : contenus dynamiques client-side
jQuery mobile / PhoneGap : contenus dynamiques client-sidejQuery mobile / PhoneGap : contenus dynamiques client-side
jQuery mobile / PhoneGap : contenus dynamiques client-side
 
Responsible Design ou Le web moderne à destination de tous
Responsible Design ou Le web moderne à destination de tousResponsible Design ou Le web moderne à destination de tous
Responsible Design ou Le web moderne à destination de tous
 
Confoo - 2012-02-27 au 2012-02-28 - HTML5 workshop
Confoo - 2012-02-27 au 2012-02-28 - HTML5 workshopConfoo - 2012-02-27 au 2012-02-28 - HTML5 workshop
Confoo - 2012-02-27 au 2012-02-28 - HTML5 workshop
 
Programmer en html5, css 3 et java script (70 480)
Programmer en html5, css 3 et java script (70 480)Programmer en html5, css 3 et java script (70 480)
Programmer en html5, css 3 et java script (70 480)
 
2014.12.11 - TECH CONF #3 - Présentation Bootstrap
2014.12.11 - TECH CONF #3 - Présentation Bootstrap2014.12.11 - TECH CONF #3 - Présentation Bootstrap
2014.12.11 - TECH CONF #3 - Présentation Bootstrap
 
HTML5 W3C Conference Euratechnologie
HTML5 W3C Conference EuratechnologieHTML5 W3C Conference Euratechnologie
HTML5 W3C Conference Euratechnologie
 
Node.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascriptNode.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascript
 
La mobilité dans Drupal
La mobilité dans DrupalLa mobilité dans Drupal
La mobilité dans Drupal
 
Decouvrez CreateJS
Decouvrez CreateJSDecouvrez CreateJS
Decouvrez CreateJS
 
Présentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'OfflinePrésentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'Offline
 
Du JavaScript dans mon projet
Du JavaScript dans mon projetDu JavaScript dans mon projet
Du JavaScript dans mon projet
 
jQuery Mobile & Applications Web
jQuery Mobile & Applications WebjQuery Mobile & Applications Web
jQuery Mobile & Applications Web
 

Cours JavaScript

  • 1. JQuery Document original de François BONNEVILLE francois@aricia.fr, Laboratoire d'Informatique de l’Université de Franche-Comté, ajouts par Michel Buffa, buffa@unice.fr, Université de Nice
  • 2. Cours applications web M1 Miage 2011 2 De JavaScript… à jQuery • La naissance de JavaScript ♦ 1995 : Brendan Eich développe pour Netscape Communications Corporation, un langage de script, appelé Mocha, puis LiveScript et finalement JavaScript ♦ Javascript est intégré dans le navigateur Netscape 2. Succès immédiat. • La guerre des navigateurs ♦ Netscape et Microsoft (avec JScript dans Internet Explorer) ont développé leur propre variante de JavaScript avec des fonctionnalités supplémentaires et incompatibles, notamment dans la manipulation du DOM (modèle objet du navigateur WEB) ♦ 1997 : Adoption du standard ECMAScript. Les spécifications sont rédigées dans le document Standard ECMA-262.
  • 3. Cours applications web M1 Miage 2011 3 La naissance de la fondation Mozilla • Netscape perd des parts de marché face à Microsoft • Malgré un procès pour concurrence déloyale, Netscape, racheté par AOL est dissoute en 2004 • Netscape, dans ses dernières forces, fonde la fondation principauté Mozilla, et lui livre le code source de Netscape Navigator 5, qui contient les premières briques du moteur de rendu Gecko (aujourd’hui au coeur de Firefox). • Actuellement, les navigateurs web modernes supportent tous les spécifications ECMAScript • Mais chacun a étendu les spécifications pour utiliser au mieux son propre navigateur, ce qui a amené à des différences d’implémentation suivant le navigateur…
  • 4. Cours applications web M1 Miage 2011 4 JavaScript devenu incontournable • Les spécifications ECMAScript ont permis de pérenniser JavaScript • JavaScript permet de contrôler quasiment tous les paramètres d’une page WEB • C’est le seul langage, coté client, capable de changer dynamiquement l’aspect d’une page WEB • Avec l’arrivée de l’objet XMLHttpRequest permettant le développement d’applications AJAX, JavaScript est devenu incontournable dans le développement d’interfaces WEB évoluées (WEB2.0)
  • 5. Cours applications web M1 Miage 2011 5 Les premiers « Frameworks » • Comme il était devenu difficile de coder du javascript pour tous les navigateurs, sont apparus des « Frameworks » permettant une spécification unique, indépendante du navigateur ♦ PrototypeJS - www.prototypejs.org script.aculo.us ♦ Mootools - mootools.net ♦ DoJo Toolkit - www.dojotoolkit.org ♦ Yahoo UI - developer.yahoo.com/yui/ ♦ ExtJS - www.extjs.com ♦ UIZE - www.uize.com
  • 6. Cours applications web M1 Miage 2011 6 JQuery • Une bibliothèque javascript open-source et cross- browser • Elle permet de traverser et manipuler très facilement l'arbre DOM des pages web à l'aide d'une syntaxe fortement similaire à celle d'XPath. • JQuery permet par exemple de changer/ajouter une classe CSS, créer des animations, modifier des attributs, etc. • Gérer les événements javascript • Faire des requêtes AJAX simplement
  • 7. John Resig • John Resig est un développeur d’outils JavaScript pour Mozilla Corporation et auteur du livre Pro JavaScript Techniques. Il est également le créateur et développeur principal de la jQuery JavaScript library. • Il vit à Boston, MA. Il a publié son second livre : Secrets of the JavaScript Ninja, en 2009. • Il a porté le langage processing en javascript l’année dernière (http://processingjs.org/), • Il a créé également jQuery Mobile (http://jquerymobile.com/) • Microsoft et Nokia incluent jQuery sur leurs plateformes,[1] Microsoft dansVisual Studio[2] pour l’utiliser avec les frameworks ASP.NET AJAX et ASP.NET MVC Framework alors que Nokia l’a intégré dans sa plateformeWeb Run- Time.
  • 8. Ce que jQuery n’est pas • Un substitut pour apprendre JavaScript ♦ jQuery est très puissant et très pratique, mais vous devez néanmoins connaitre les bases de Javascript, notamment la partie “objet” du langage. ♦ Voir des vlivres comme : “Object Oriented Javascript de Stoyan Stefanov” ou “jQuery, novice to ninja” (google est votre ami) • Une réponse à tout ♦ Utilisez jQuery uniquement lorsque c’est nécessaire. On commence toujours par HTML+CSS avant de chercher des plugins jQuery magiques. ♦ De nombreuses UI sont pures html+CSS
  • 9. Cours applications web M1 Miage 2011 9 une simple bibliothèque à importer • Disponible sur le site de Jquery http://jquery.com/ <script type="text/javascript" src="jquery.js"></script> • Ou directement sur Google code <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min. js"> </script>
  • 10. Cours applications web M1 Miage 2011 10 La fonction jQuery() • jQuery repose sur une seule fonction : jQuery() ou $(). • C’est une fonction JavaScript • Elle accepte des paramètres • Elle retourne un objet • $ : Syntaxe issue de « Prototype »
  • 11. Cours applications web M1 Miage 2011 11 Selecteur magique : $('anything') ! • $ accepte un sélecteur CSS en argument • $ accepte des ID : ♦$('#nomID') retourne un élément <-> document.getElementById • $ accepte des classes : ♦$('.nomClasse') retourne tous les éléments qui correspondent à cette classe • $ accepte plusieurs sélecteurs ♦$('.article, .nouvelles, .edito')
  • 12. Cours applications web M1 Miage 2011 12 $(anything) • $ accepte des sélecteurs spécifiques : ♦ $(':radio'), $(':header'), $(':first-child') • des sélecteurs en forme de filtres : ♦ $(':checked'), $(':odd'), $(':visible') ♦ plus fort: $(':contains(du texte)') • des attributs ♦ $('a[href]'), $('a[href^=http://'), $('img[src$=.png]'
  • 13. Rappel sur le DOM • “Le Document Object Model (DOM) est une convention cross-platform et independente du langage pour representier and interagir avec des objets dans des documents en HTML, XHTML ou XML.
  • 14. Cours applications web M1 Miage 2011 14 Exemple de manipulation du DOM <html> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/ jquery/1/jquery.min.js"> </script> <body> <div id="monDiv">Bonjour</div> <a href="#" onClick="$('#monDiv').hide();"> disparition</a> </body> </html>
  • 15. Cours applications web M1 Miage 2011 15 jQuery: un objet • les méthodes s'appliquent généralement à tous les éléments sélectionnés ♦ $('.classe').hide(); ♦ $('.classe').show(); • de nombreuses méthodes utilitaires ♦ parcourir le DOM: .parent(), .next(), .children(), .parents() ♦ ajouter ou retirer des classes CSS: addClass, removeClass ♦ manipuler: append, wrap, prepend • Intérêt fondamental: la plupart des méthodes de l'objet retournent l'objet lui-même ♦ on peut chaîner les appels ! ♦ $('anything').parent().find('still anything').show(); ♦ Cette propriété est extrêmement puissante !
  • 16. Nombreux exemples interactifs • Les selecteurs jQuery sont illustrés par de nombreux tutoriaux interactifs, par exemple : ♦ Ici : http://www.w3schools.com/jquery/jquery_examples.asp ♦ Et là : http://docs.jquery.com/Tutorials:Live_Examples_of_jQuer y Cours applications web M1 Miage 2011 16
  • 17. jQuery example d’utilisation 1 <ul> <li style=“background:red;”> <span>Changed</span> First item </li> <li> Second item </li> <li style=“background:red;”> <span>Changed</span> Third item </li> </ul> <ul> <li> First item </li> <li> Second item </li> <li> Third item </li> </ul> <ul> <li> <span>Changed</span> First item </li> <li> Second item </li> <li> <span>Changed</span> Third item </li> </ul> $(“li:odd”).prepend(‘<span>Changed</span>’).css({background:“red”});
  • 18. jQuery example d’utilisation 2 <div> <span class=“foo”> Some text </span> </div> <div style=“display:none”> <span> More text </span> <span class=“foo”> </span> </div> <div> <span class=“foo”> Some text </span> </div> <div style=“display:none”> <span> More text </span> <span class=“foo”> Goodbye cruel world. </span> </div> <div> <span class=“foo”> Some text </span> </div> <div style=“display:none”> <span> More text </span> <span class=“foo”> Goodbye cruel world. </span> </div> $(“div:hidden”).find(“.foo”).empty().text(“Changed”).end().show(); <div> <span class=“foo”> Some text </span> </div> <div style=“display:block”> <span> More text </span> <span class=“foo”> Changed </span> </div> <div> <span class=“foo”> Some text </span> </div> <div style=“display:none”> <span> More text </span> <span class=“foo”> Changed </span> </div> <div> <span class=“foo”> Some text </span> </div> <div style=“display:none”> <span> More text </span> <span class=“foo”> Changed </span> </div>
  • 19. Determiner si une checkbox est cochée If ($(‘#total’).attr(‘checked’)) { //Traitement si cochée } else { //Traitement si non cochée } jQuery example d’utilisation 3
  • 20. Intercepter le bouton submit d’un formulaire : $(document).ready(function() { $(‘#ok’).submit(function() { if ($(‘#login’).val() ==‘’) { alert (‘Entrer un login’); return false; } }) }); jQuery example d’utilisation 4
  • 21. Effacer le contenu d’un champs de texte lorsqu’il a le focus <input name=“nom” type=“text” id=“nom” value=“Entrez votre nom”> $(‘#nom’).focus(function() { var field = $(this); field.val(‘’); }); jQuery example d’utilisation 5
  • 22. Tester le clic sur n’importe quel bouton radio : $(‘:radio’).click(function() { //do stuff }); Donner le focus au premier élément d’un formulaire: $(‘nom’).focus; jQuery example d’utilisation 6
  • 23. jQuery example d’utilisation 7 <div> <span class=“all”>Select All</span> <span class=“none”>Select None</span> <input name=“chk1” type=“checkbox”/> <input name=“chk2” type=“checkbox”/> <input name=“chk3” type=“checkbox”/> </div> <div> <span class=“all”>Select All</span> <span class=“none”>Select None</span> <input name=“chk4” type=“checkbox”/> <input name=“chk5” type=“checkbox”/> <input name=“chk6” type=“checkbox”/> </div> $(“span.none”).click( function(){ $(this).siblings(“:checkbox”).removeAttr(“checked”); } ); $(“span.all”).click( function(){ $(this).siblings(“:checkbox”).attr(“checked”,“checked”); } ); $(“span”).click( function(){ if($(this).text()==“Select All”)) $(this).siblings(“:checkbox”).attr(“checked”,“checked”); else if ($(this).attr(“class”)==“none”) $(this).siblings(“:checkbox”).removeAttr(“checked”); } ); or
  • 24. Cours applications web M1 Miage 2011 24 Ajax • JQuery possède toute une panoplie de fonctions permettant de simplifier les requêtes Ajax • La plus simple : $('#maDiv').load('page.html'); • Plus complexe : $.get('test.html', function(data) {faire quelque chose); • Générale : $.ajax({ url: 'document.xml', type: 'GET', dataType: 'xml', timeout: 1000, error: function(){alert('Erreur chargement'); }, success: function(xml){faire quelque chose} });
  • 25. Tutorial ajax/jQuery très complet ! • Ici : http://viralpatel.net/blogs/2009/04/jquery-ajax- tutorial-example-ajax-jquery-development.html Cours applications web M1 Miage 2011 25
  • 26. jQuery AJAX Exemple <html> <head> <title>AJAX Demo</title> <script type=“text/javascript” src=“jquery.js”> </script> <script type=“text/javascript”> var cnt = 0; $(function(){ $.ajaxSettings({ error:function(){alert(“Communication error!”);} }); $(“:button”).click(function(){ var input = {in:$(“:textbox”).val(),count:cnt}; $.getJSON(“ajax.php”,input,function(json){ cnt = json.cnt; $(“.cnt”).text(cnt) $(“.msg”).text(json.out); }); }); }); </script> </head> <body> <p> Input: <input type=“textbox”/> <input type=“button” value=“Send”/> Output # <span class=“cnt”></span>: <span class=“msg”></span> </p> </body> </html> <?php $output = ‘’; switch($_REQUEST[‘in’]) { case ‘hello’: $output = ‘Hello back.’; break; case ‘foo’: $output = ‘Foo you, too.’; break; case ‘bar’: $output = ‘Where Andy Capp can be found.’; break; case ‘foobar’: $output = ‘This is German, right?’; break; default: $output = ‘Unrecognized string.’; } $count = $_REQUEST[‘count’]+1; echo json_encode( array( ‘out’ => $output, ‘cnt’ => $count ) ); exit; ?>
  • 27. jQuery AJAX Fonctions • $.func(url[,params][,callback]) ♦ $.get ♦ $.getJSON ♦ $.getIfModified ♦ $.getScript ♦ $.post • $(selector), inject HTML ♦ load ♦ loadIfModified • $(selector), ajaxSetup alts ♦ ajaxComplete ♦ ajaxError ♦ ajaxSend ♦ ajaxStart ♦ ajaxStop ♦ ajaxSuccess • $.ajax, $.ajaxSetup ♦ async ♦ beforeSend ♦ complete ♦ contentType ♦ data ♦ dataType ♦ error ♦ global ♦ ifModified ♦ processData ♦ success ♦ timeout ♦ type ♦ url
  • 28. Cours applications web M1 Miage 2011 28 Inconvénients d’AJAX / XML • XML est délicat à parser en Javascript/jQuery $.ajax({ type: "GET", url: "courses.xml", dataType: "xml", complete : function(data, status) { var products = data.responseXML; var html = ""; $(products).find('product').each(function(){ var id = $(this).attr('id'); var name = $(this).find('name').text(); var price =$(this).find('price').text(); html += "<li>#"+id +" - <strong>"+name+"</strong> : " +price+"</li>"; }); $("#cousesList").html(html); }});
  • 29. Cours applications web M1 Miage 2011 29 Inconvénients d’AJAX / Sécurité • pour des raisons de sécurité, les navigateurs interdisent de faire du « cross-domain » avec XMLHttpRequest dont le résultat serait du XML (et donc du HTML) ….mais pas pour des scripts Javascript ! • D’où l’idée de définir un modèle de données sous la forme d’objet Javascript ♦JSON • Voir : http://www.jsonpexamples.com/
  • 30. Cours applications web M1 Miage 2011 30 JSON (JavaScript Object Notation) • format de données textuel, générique, dérivé de la notation des objets de JavaScript • permet de représenter de l'information structurée. • décrit par la RFC 4627 de l’IETF. • Exemple : { "Image": { "Width": 800, "Height": 600, "Title": "Vue du 15ème étage", "Thumbnail": { "Url": "http://www.example.com/481989943", "Height": 125, "Width": "100" }, "IDs": [116, 943, 234, 38793] } }
  • 31. Cours applications web M1 Miage 2011 31 Les avantages de JSON • Type de données générique et abstrait pouvant ♦ être représenté dans n'importe quel langage de programmation ♦ représenter n'importe quelle donnée concrète. • simple à mettre œuvre tout en étant complet. • peu verbeux, lisible aussi bien par un humain que par une machine • facile à apprendre, syntaxe réduite • types de données sont connus et simples à décrire • indépendant du langage de programmation (bien qu'utilisant une notation JavaScript) • Le type MIME application/json est utilisé pour le transmettre par le protocole HTTP (notamment en Ajax) ♦ Standard dans les web services .Net, Java EE, etc.
  • 32. Cours applications web M1 Miage 2011 32 Les avantages de JSON • Vis-à-vis de JavaScript, un document JSON représente un objet, d'où son nom. Il est donc plus facile à interpréter qu'un XML. var donnees = eval('('+donnees_json+')'); • Le site json.org fournit une liste de parseurs pour d'autres langages • Il peut aussi être utilisé pour : ♦ la sérialisation et déserialisation d'objets ; ♦ l’encodage de documents ;
  • 33. Cours applications web M1 Miage 2011 33 jQuery et JSON jQuery.getJSON( url, [ data ], [ callback(data, textStatus) ] ) Exemple : <html><head> <script src="jquery.min.js"></script> </head> <body> <div id="images" style="height: 300px"></div> <script> $.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tag s=besancon&tagmode=any&format=json&jsoncallback=?", function(data){ $.each(data.items, function(i,item){ $("<img/>").attr("src", item.media.m).appendTo("#images"); if ( i == 3 ) return false; }); }); </script> </body></html>
  • 34. Cours applications web M1 Miage 2011 34 jQuery UI • http://jqueryui.com/ • Un ensemble de composants graphiques téléchargeable à l'adresse http://jqueryui.com/download. ♦ un noyau (Core) ♦ des « comportements » (interactions) draggable : pour glisser-déplacer un élément http://jqueryui.com/demos/draggable/ droppable : pour « déposer » un élément http://jqueryui.com/demos/droppable/ resizable : pour redimensionner un élément http://jqueryui.com/demos/resizable/ selectable : pour sélectionner des éléments à la souris http://jqueryui.com/demos/selectable/ sortable : pour trier des éléments http://jqueryui.com/demos/selectable/
  • 35. Cours applications web M1 Miage 2011 35 jQuery UI ♦ des « widgets » « accordéon » http://jqueryui.com/demos/accordion/ « calendrier » http://jqueryui.com/demos/datepicker/ boîte de dialogue http://jqueryui.com/demos/dialog/ barre de progression http://jqueryui.com/demos/progressbar/ curseur http://jqueryui.com/demos/slider/ onglets http://jqueryui.com/demos/tabs/ ♦ des « effets » http://jqueryui.com/demos/effect/ Clignotement, disparition, apparition, éclatement, transition… • Une collection de thèmes http://jqueryui.com/themeroller/
  • 36. Cours applications web M1 Miage 2011 36 jQuery Plugins • On peut étendre facilement jQuery en utilisant des « plugins » • Les méthodes ajoutées sont au même niveau que les méthodes natives • Ils conservent les mêmes sémantiques que les méthodes natives: retourner l'objet jQuery, appliquer la méthode à tous les éléments représentés • Des centaines plugins existent d'ores et déjà, de qualité variable; certains mis en avant par l'équipe de développement • http://plugins.jquery.com/ ♦ des menus http://apycom.com/ http://www.wizzud.com/jqDock/ ♦ Galerie photo : VisualLightbox http://visuallightbox.com
  • 37. Cours applications web M1 Miage 2011 37 Conclusion • jQuery est un framework complet et facile à utiliser • Bibliothèque légère à charger • Simplifier et unifie la syntaxe d’accès au DOM • Permet de faire des requètes AJAX simplement • UI et nombreux plugins complémentaires • D’autres frameworks sont disponibles et ne sont pas à oublier : il est possible de combiner les frameworks ♦ Dojo recommandé pour application riche en widgets et nécessitant une forte cohérence (widgets MVC notamment)
  • 38. jQuery ressources intéressantes • Site officiel ♦ http://www.jquery.com • Learning Center ♦ http://docs.jquery.com/Tutorials ♦ http://www.learningjquery.com/ ♦ http://15daysofjquery.com/ ♦ http://www.roseindia.net/ajax/jquery/ • Support ♦ http://docs.jquery.com/Discussion ♦ http://www.nabble.com/JQuery-f15494.html mailing list archive ♦ irc.freenode.net irc room: #jquery • Documentation ♦ http://docs.jquery.com/Main_Page ♦ http://www.visualjquery.com ♦ http://jquery.bassistance.de/api-browser/ • jQuery Success Stories ♦ http://docs.jquery.com/Sites_Using_jQuery