-
1. Keypress, c'est quoi ?
C'est tout simplement une bibliothèque javascript qui vous permet d'intercepter toutes les touches pressées au clavier et d'effectuer une action en conséquence.
Exemple: Utilisez les flèches du clavier pour déplacer le cadre rouge.
2. Mise en place
Comme toujours, il faut charger un script. Téléchargez keypress-2.0.3.min.js et enregistrez le parmi les fichiers de votre blog.
Récupérez l'url du fichier puis chargez le comme ceci:
<script src="url de keypress-2.0.3.min.js"></script>
3. Utilisation
Exemple 1:Faire une action lorsqu'une touche est pressée
<script> onJSFilesLoaded.push(function(){ var listener = new window.keypress.Listener();listener.simple_combo("b", function() { alert ("Vous avez pressé la touche b"); }); });</script>
Ce code est très simple. Lors de l'appui sur la touche b, une fonction de callback est appelée et dans notre cas, elle affiche une fenêtre qui nous dit que l'on a appuyé sur la touche b.
Exemple 2: Détecter une combinaison de touches
Il est tout aussi possible de détecter une combinaison de touches par exemple Maj+l (faites l'essai). Dans ce cas on écrira:
var listener = new window.keypress.Listener();listener.simple_combo("shift l", function() { alert ('Bravo vous avez bien suivi :)'); });
Exemple3: Compter le nombre de pressions
Si vous appuyez sur Maj et m, alors je vous dit que vous l'avez fait 0 fois
var listn=new window.keypress.Listener();listener.counting_combo("shift m", function(e, count) { $('n').innerHTML= count; });
Exemple 4: Réagir à une séquence
Appuyez successivement sur les touches a b c d e f puis la touche entrée pour voir apparaître un message.
var listx=new window.keypress.Listener();listener.sequence_combo("a b c d e f enter", function() { $('hiddendiv').setStyle("display",'block'); }, true);
Je ne vous ai donné qu'un apperçu de Keypress mais sachez qu'il existe d'autres possibilités et options sur la page officielle de Keypress
Pour une liste complète des touches, suivez ce lien:https://github.com/dmauro/Keypress/blob/master/keypress.coffee#L728-864
votre commentaire -
Si vous n'avez jamais entendu parler de javascript, alors tout ce qui est dans ce blog n'est pas pour vous. Ou plus exactement, il n'est pas le plus à même pour vous apprendre le javascript.
Par contre, si vous avez commencé à tripatouiller le javascript, vous savez qu'il permet de faire quantité de choses mais d'une manière pas toujours simple. Le javascript est un langage orienté objet et qui s'exécute du coté client donc sur votre machine. (Nota: il existe bien un javascript exécutable coté serveur, NodeJS, mais c'est une autre histoire).
Ecrire ou lire un code javascript n'est pas toujours facile et même parfois très long. Il est sensible à la casse et il est souvent nécessaire de faire de nombreux essais avant d'obtenir un code valide, d'où l'émergence de nombreuses librairies pour nous simplifier la vie en proposant des fonctions utiles ou une écriture raccourcie du code.
Par exemple, si on souhaite accéder à une balise qui a l'id 'mabalise'
En javascript traditionnel on écrira:
document.getElementById("mabalise")
Alors qu'en utilisant la librairie Mootools (déjà incluse dans les blogs Eklablog) on écrira:
$('mabalise')
Et il existe pléthore de librairies. Que l'on souhaite manipuler le DOM, les dates, des objets graphiques 3d, du son ou de la vidéo, il y a toujours une bibliothèque adaptée à votre besoin.
Je vais donc vous présenter sur ce blog des librairies qui sont compatibles avec Eklablog et surtout, la manière de les intégrer et de les utiliser en donnant quelques exemples.
Vous pouvez avoir un aperçu des meilleures librairies javascript sur JavaScripting.com (en anglais).
Vous retrouverez dans le menu de droite l'ensemble des bibliothèques déjà expliquées au sein du blog alors bonne lecture !
2 commentaires -
1. Cibler un élément du DOM
Mootools étant intégré dans nos blogs, il est très facile de cibler un élément.
Pour un élément unique ayant une id, il suffit de le cibler comme ceci:
$("idelement")
Pour cibler les éléments d'une classe on procedera comme ceci:
$$("classeelement")
$$("classeelement")[0] ciblera le premier
$$("classeelement")[1] ciblera le second etc.On peut aussi cibler tout autre élément comme ci dessous les balises de lien a
$$("a")
On peut aussi cibler de manière très précise. Par exemple les liens "a" qui ont la classe "maclasse" et qui se trouve dans l'élément d'id "monid"
$$("#monid a.maclasse")
2. Placer une balise non reconnue par l'éditeur
Nos blogs sont éditables à l'aide de TinyMCE. Seulement, ses limitations ou celles mises en place par le staff d'Eklablog ne permettent pas toujours de placer les balises que l'on souhaite.
Par exemple, si vous voulez mettre en place une balise SVG comme ci-dessous, vous n'y arriverez pas.
<svg><rect id="rect" width="25" height="25"" x="10%" y="10%" fill="gray" stroke="rgba(80, 80, 80, 1)" stroke-width="0px" /></svg>
Il va donc falloir le faire dynamiquement à l'aide du javascript. Pour cela, on va créer une balise (par exemple une div) qui va servir à recevoir la balise svg.
On va lui donner une id afin de pouvoir la cibler facilement et on va modifier son contenu à l'aide d'un petit script.
<div id="conteneur"> </div> <script> onJSFilesLoaded.push(function(){
$("conteneur").innerHTML='<svg><rect id="rect" width="25" height="25"" x="10%" y="10%" fill="gray" stroke="rgba(80, 80, 80, 1)" stroke-width="0px" /></svg>'; }); </script>3. Ajouter un évènement sur un élément du DOM
Il est souvent intéressant de faire réagir un élément à un événement du visiteur comme par exemple un clic de souris. Le code ci-dessous va afficher un message à chaque fois que vous cliquerez sur un des titres de cette page.
<div id="conteneur"> </div> <script> onJSFilesLoaded.push(function(){ $$('h3').addEvent('click', function(){ alert('Vous avez cliqué sur un élément h3'); }); }); </script>
4. window.onload ou onJSFilesLoaded
Peut-être ne le savez vous pas mais le javascript est exécuté dès que le navigateur le lit. Aussi il est tout à fait possible que le javascript agisse sur un élément du DOM qui n'a pas encore été chargé par le navigateur. Dans ce cas, une erreur apparaît et le script ne fonctionnera pas.
Il devient dans ce cas nécessaire d'obliger l'exécution du javascript une fois que toute la page est chargée.
La première possibilité est de placer le script avec window.onload. Cela fonctionne mais à condition qu'il n'y ait qu'un seul window.onload sur la page. Si ce n'est pas le cas, seul le code du dernier sera exécuté (me semble-t-il).
Exemple:
<script> window.onload=function(){ alert ('Bonjour'); }; </script>
Une autre solution consiste à utiliser une fonction d'Eklablog: onJSFilesLoaded. Dans ce cas, le script sera exécuté à la fin du chargement de la page mais présente l'intérêt d'être utilisé plusieurs fois
<script> onJSFilesLoaded.push(function(){ alert ('Bonjour'); }); </script>
votre commentaire -
1.Introduction
Qui n'a jamais eu à réaliser un graphique à partir d'une série de nombres ? Pour ma part j'en ai fait plus que de raison. Maintenant imaginez en réaliser un en le programmant en javascript. Bonjour la galère !
Mais ce n'est pas grave car des gens bien pensants ont réalisé Chartist.js, une bibliothèque javascript pour réaliser des graphiques sous forme de courbes, nuages de points, graphiques à barre ou camenberts. Et tout cela à l'aide de quelques lignes de code seulement.
Jugez en par vous même:
Ces graphiques ont été réalisés avec le code suivant:
var data = { labels: ['Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi'], series: [ [18, 12, 2, -12, 0], [0, 5, 15, 16, 8], [-15, 12, 18, 11, -4] ] }; Chartist.Line('.ct1', data); var data = { series: [5, 3, 4] }; var sum = function(a, b) { return a + b }; Chartist.Pie('.ct2', data, { labelInterpolationFnc: function(value) { return Math.round(value / data.series.reduce(sum) * 100) + '%'; } }); var data3 = { labels: ['Jan', 'Fev', 'Mar', 'Avr', 'Mai', 'Jun', 'Jul', 'Aou', 'Sep', 'Oct', 'Nov', 'Dec'], series: [ [5, 4, 3, 7, 5, 10, 3, 4, 8, 10, 6, 8], [3, 2, 9, 5, 4, 6, 4, 6, 7, 8, 7, 4] ] }; var options = { seriesBarDistance: 10 }; var responsiveOptions = [ ['screen and (max-width: 640px)', { seriesBarDistance: 5, axisX: { labelInterpolationFnc: function (value) { return value[0]; } } }] ]; Chartist.Bar('.ct3', data3, options, responsiveOptions);
Et c'est tout ! Reconnaissez que c'est assez bluffant.
2. Mise en place
Tout d'abord, il vous faut récupérer les fichiers suivants:
Placez chartist.min.js et chartist.min.map parmi les fichiers de votre blog.
Copiez le contenu de chartist.min.css et collez le dans Apparence/Modifier le thème/Ajouter du css
3. Utilisation
Lorsque vous souhaitez utiliser un graphique dans votre article ou dans votre page, chargez le script avec le code suivant en veillant à mettre l'url correspondant à votre fichier et en le mettant dans le code source de votre page/article ( bouton <> de l'éditeur):
<script src="http://ekladata.com/n9TxtVW6hpNT5chqHXrUpHtK0B0/chartist-min.js"></script>
A l'endroit ou vous souhaitez faire apparaître le graphique, créez une div en lui donnant les classes ct-chart et une classe pour le ratio (pas obligatoire - voir chapitre suivant).
<div class="ct-chart ct-octave"> </div>
Enfin placez votre code javascript (de préférence à la fin de l'article ou de la page) comme ceci:
<script> onJSFilesLoaded.push(function(){ var data = { labels: ['Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi'], series: [ [18, 12, 2, -12, 0], [0, 5, 15, 16, 8], [-15, 12, 18, 11, -4] ] }; Chartist.Line('.ct-chart', data); }); </script>
4. Réglages
De nombreux ratios sont prédéfinis pour l'apparence de vos graphiques. Il suffit d'indiquer la classe correspondante à votre <div>
Classe Proportion .ct-square 1 .ct-minor-second 15:16 .ct-major-second 8:9 .ct-minor-third 5:6 .ct-major-third 4:5 .ct-perfect-fourth 3:4 .ct-perfect-fifth 2:3 .ct-minor-sixth 5:8 .ct-golden-section 1:1.618 .ct-major-sixth 3:5 .ct-minor-seventh 9:16 .ct-major-seventh 8:15 .ct-octave 1:2 .ct-major-tenth 2:5 .ct-major-eleventh 3:8 .ct-major-twelfth 1:3 .ct-double-octave 1:4
votre commentaire -
Moment.js est la librairie qu'il faut avoir pour manipuler des dates et/ou des heures. Voyez tout de suite un exemple:
Aujourd'hui nous sommes le:
C'est le ème jour de l'année
Nous sommes un
Il reste jours jusque Noel soit heures
Ce sera le
Cette bibliothèque permet toutes les manipulations possibles sur les dates.
1. Installation
Téléchargez le code javascript ici: http://momentjs.com/downloads/moment-with-locales.js
Enregistrez le sous le nom moment-with-locales.js puis placez le parmi les fichiers de votre blog.
Créez un module simple html puis placez y le code suivant en veillant à remplacer l'url par celle de votre fichier:
<script src="http://ekladata.com/pcsyQ3tk8KLClKiT8Hit03-VGFg/moment-with-locales.js"></script>
2. Exemples d'utilisation
Vous pouvez retrouver toutes les fonctions sur le site officiel (en anglais): http://momentjs.com/docs/
Ci-dessous quelques exemples des possibilités:
Afficher la date en français
moment.locale('fr'); moment().format( ' Do MMMM YYYY');
Connaître le jour de l'année, la semaine ou le mois
moment().dayOfYear(); moment().week(); moment.month();
Le jour de la semaine
moment().format( 'dddd');
Ajouter 7 jours moment().add(7, 'days');
Retrancher 27 jours moment().subtract(27, 'days')
Je ne vais pas énumérer tout ce qu'il est possible de faire mais sachez que cette bibliothèque est extrêmement complète et permet aussi de gérer les Timestamp
Formatage:
Token Output Mois M 1 2 ... 11 12 Mo 1st 2nd ... 11th 12th MM 01 02 ... 11 12 MMM Jan Feb ... Nov Dec MMMM January February ... November December Trimestre Q 1 2 3 4 Jour du mois D 1 2 ... 30 31 Do 1st 2nd ... 30th 31st DD 01 02 ... 30 31 Jour de l'année DDD 1 2 ... 364 365 DDDo 1st 2nd ... 364th 365th DDDD 001 002 ... 364 365 Jour de la semaine d 0 1 ... 5 6 do 0th 1st ... 5th 6th dd Su Mo ... Fr Sa ddd Sun Mon ... Fri Sat dddd Sunday Monday ... Friday Saturday Jour de la semaine(Locale) e 0 1 ... 5 6 Jour de la semaine (ISO) E 1 2 ... 6 7 Semaine de l'année w 1 2 ... 52 53 wo 1st 2nd ... 52nd 53rd ww 01 02 ... 52 53 Semaine de l'année (ISO) W 1 2 ... 52 53 Wo 1st 2nd ... 52nd 53rd WW 01 02 ... 52 53 Année YY 70 71 ... 29 30 YYYY 1970 1971 ... 2029 2030 AM/PM A AM PM a am pm Heure H 0 1 ... 22 23 HH 00 01 ... 22 23 h 1 2 ... 11 12 hh 01 02 ... 11 12 Minute m 0 1 ... 58 59 mm 00 01 ... 58 59 Seconde s 0 1 ... 58 59 ss 00 01 ... 58 59 Timestamp X 1360013296
3 commentaires