Le blog

Le Javascript mobile : « touch events  » et « gesture events »

10 août 2011

Lors de mon stage à Uzik, j’ai du mettre en place un site iPad puis iPhone. J’ai alors été confronté à une question importante : comment gérer les « mouse events » sur les terminaux mobiles ? Tout simplement en utilisant les événements « touch » et « gesture » (appelés respectivement « touch events » et « gesture events ». Ces événements s’utilisent presque de la même manière que les événements « mouse » pour un ordinateur. Les événements « touch » Les « touch events » remplacent les « mouse events » sur les terminaux tactiles, bien que ces derniers fonctionnent toujours. Ils sont au nombre de trois : -          touchstart (≈ mousedown) : s’amorce lorsqu’un doigt touche l’écran -          touchmove (≈ mousemove) : s’amorce lorsqu’un doigt touche l’écran puis se déplace -          touchend (≈ mouseup) : s’amorce lorsqu’un doigt quitte l’écran Ces « touch events » n’ont pas encore été intégrés à jQuery (je ne parle pas de jQuery Mobile) et s’initialisent donc avec les fonctions « bind » ou « live ». Les événements « gesture » Les « gesture events » n’ont pas d’équivalents sur ordinateur. Ils permettent de contrôler le zoom ou la rotation sur un élément. Ils sont au nombre de trois : -          gesturestart : s’amorce lorsqu’au moins deux doigts touchent l’écran -          gesturechange : s’amorce lorsqu’au moins deux doigts bougent sur l’écran -          gestureend : s’amorce lorsqu’au moins deux doigts quittent l’écran De même, ces « gesture events » s’initialisent avec les fonctions « bind » ou « live ». Comment les mettre en place Les « touch events » et « gesture events » fonctionnent au final comme les « mouse events ». Il faut initialiser une variable « event » par exemple, qui va permettre de récupérer les propriétés associées, comme le nombre de doigts sur l’écran, leur position …
$(‘element’).bind(‘touchstart’, function(event){
   var e = event.originalEvent ;
   event.preventDefault() ;
   var firstFinger = e.touches.pageX ;
}) ;

$(‘element’).bind(‘gesturechange’, function(event){
   var e = event.originalEvent ;
   event.preventDefault() ;
   $(this).css(‘-webkit-transform’, ‘scale(‘+e.scale+’)’) ;
}) ;
En créant une variable égale à “event.originalEvent”, on a donc accès aux propriétés comme la position en x du premier doigt (e.touches[0].pageX) ou le facteur de multiplication pour le zoom (e.scale). Il est intéressant de toujours appeler la fonction « event.preventDefault() » qui est un peu un équivalent du « return false ». Sauf que cet appel peut être effectué n’importe où dans la fonction, contrairement au « return false ». Les terminaux mobiles optimisés pour Webkit Comme vous l’avez vu pour le zoom, j’utilise la propriété CSS3 « -webkit-transform ». En effet, on aurait pu jouer avec le « height » et le « width » de l’élément, mais d’une part c’est plus long à faire, et d’autre part, l’appel au moteur graphique de Webkit est beaucoup plus optimisé. De même, pour un slider par exemple, plutôt qu’utiliser la position relative ou bien les marges, il est très recommandé d’utiliser la propriété « -webkit-transform : translate3d(x,y,z) ».   Toutes les propriétés de Webkit. Doc Apple pour Javascript sur iPhone.  
Lire la suite

Portfolio

Custom Javascript Console pour Chrome

12 avril 2012

L’Application Cache (ou Cache Manifest) couplé à WordPress

28 décembre 2011

Le cache Javascript : comment et pourquoi !

21 décembre 2011

Custom Actions + Social Design = Custom Open Graph : la nouvelle révolution de Facebook

8 décembre 2011

Travailler sur 3 écrans avec Matrox

7 octobre 2011

Le Javascript mobile : « touch events  » et « gesture events »

10 août 2011

Adobe Edge : test et impressions

1 août 2011

Graph API Explorer, où comment rendre simple l’utilisation de l’Open Graph

29 juin 2011

Highcharts : réalisez vos graphiques avec un simple plugin Javascript

7 juin 2011

Les nouveautés de Flash Player, AIR et Flex (@Adobe Live)

13 mai 2011

Less CSS – Un framework CSS pour travailler plus vite !

12 mai 2011

Créer votre propre web widget

3 mai 2011

Présentation d’HETIC : première école des métiers de l’Internet

28 avril 2011

Facebook + Social Design = Open Graph : le VRAI produit de Facebook

27 avril 2011

Insérer les plugins Facebook en Ajax

24 avril 2011

Convertissez vos pages HTML en applications mobiles avec PhoneGap

22 avril 2011

Adobe expose sa vision du HTML5

21 avril 2011

Maqetta : un outil WYSIWYG en ligne pour le HTML5 !

19 avril 2011

Raphael JS – Librairie JS pour le tracé vectoriel dans canvas

15 avril 2011

HTML5 Boilerplate & Modernizr

4 avril 2011

Facebook Developer Garage Program – S01E01

29 mars 2011

Linkedin API Javascript Tutoriel

28 mars 2011

Détecter les navigateurs pour une meilleure compatibilité

24 mars 2011

Adobe propose de nouvelles propriétés CSS

11 mars 2011

Adobe Wallaby : convertir le Flash en HTML5

8 mars 2011

EEMI : finalement, c’est quoi ?

30 janvier 2011

Sarri Maxime - Javascript & jQuery Developer / Développeur Javascript & jQuery @ Paris

Je suis Sarri Maxime, développeur Javascript / front-end à Paris, encore étudiant en 4e année à HETIC.

Je m'intéresse fortement aux nouvelles technologies comme le HTML5 au service des supports mobiles et plus récemment aux objets connectés : TV, Arduino, domotique.

Bien que développeur, je ne néglige pas ce qui fait la richesse du web : sémantique, référencement, conception. J'aime participer à l'élaboration des sites que je serai amener à développer.

Sarri Maxime - Développeur Javascript

Télécharger mon CV

Télécharger ici

Formulaire de contact

Etant étudiant, je ne suis pas (encore) à la recherche d'un emploi. Je suis par contre disponible pour des demandes en freelance ou pour des stages/alternances intéressants.

Je serais présent aux événements suivants :