Si tu sais cuisiner une page Web, tu peux créer une extension pour Firefox. Ainsi pourrait être résumée la philosophie de Jetpack, un projet actuellement développé par les Laboratoires Mozilla et qui devrait devenir d'ici un an la base du nouveau mécanisme d'extensions de Firefox 4. Le but est de permettre à tout développeur Web de pouvoir bidouiller Firefox sans devoir apprendre un nouveau langage. Petit tour d'horizon à l'occasion de l'arrivée de la version 0.6
Tag - XUL
dimanche 8 novembre 2009
Avec Jetpack, si tu sais cuisiner un site Web, tu peux aussi bidouiller Firefox
Par Clochix le dimanche 8 novembre 2009, 17:03 - Lézarderies
mardi 16 septembre 2008
XUL est-il encore le bon choix pour une application web riche ?
Par Clochix le mardi 16 septembre 2008, 23:58 - Lézarderies
Celles et ceux qui suivent un peu ce journal savent que je développe depuis quelques temps une application web[1] dont l'interface utilise la technologie XUL. Le développement n'avance plus depuis quelques mois parce que je me suis lancé dans une itération de refactoring dont je n'arrive pas à me sortir, entre autre parce que quitte à effacer et ré-écrire des bouts de code, je ne cesse d'élargir le périmètre des travaux, et que j'ai fini par me demander s'il était encore judicieux de continuer à utiliser XUL, ou si je ne devais pas recommencer la partie client en pur HTML. Bref, je suis en plein doute, ce qui explique que je perde mes soirées à traîner sur des blogs et à m'épancher ici au lieu de coder[2].
Notes
[1] qui vise, soyons modeste, à être un client web universel. Pour l'instant des clients de messagerie électronique (POP et IMAP), instantanée (Jabber) et de base de données sont à peu près utilisables
[2] après mes doutes sur mon envie de continuer à faire du web, on pourrait penser que je suis en pleine crise de la quarantaine. Mais pas du tout, puisque j'ai toujours 10 ans
mercredi 23 juillet 2008
Une gestion d'évènements pas à la hauteur DOM
Par Clochix le mercredi 23 juillet 2008, 01:31 - Technoweb
Le DOM est une méthode pour représenter un document sous forme d'objets arborescents. Cette méthode est par exemple utilisée pour manipuler des documents XML ou des pages web en HTML. Plusieurs spécifications ont défini le modèle, des méthodes pour y accéder, le modifier, etc. L'une d'elles permet de gérer des évènements survenant sur les objets. Malheureusement, j'ai toujours trouvé cette spécification étonnamment incomplète. Elle présente à mon sens 2 lacunes:
- elle ne permet pas de connaître les guetteurs associés à un événement
- elle ne définit pas, ou mal, ce qui doit arriver à ces guetteurs lors de manipulations du document.
La méthode de gestion retenue est en effet de permettre d'attacher à chaque
objet des guetteurs qui seront appelés quand surviendra un événement.
Malheureusement, la spécification ne dit pas ce qui doit arriver à ces
gestionnaires quand l'objet est déplacé, par exemple dans un autre document, ou
dupliqué. Chaque implémentation de la spécification a donc dû décider de
l'attitude à adopter dans ces cas. Dans le cas de Firefox, les guetteurs sont
perdus en cas de déplacement du nœud dans un autre document (par exemple
lorsqu'on essaie d'insérer dans une fenêtre popup des éléments générés dans la
fenêtre mère), ou lorsqu'on le copie (la spécification indique effectivement
quand un objet Node est recopié en utilisant la méthode cloneNode, les
guetteurs EventListener attachés à l'objet Node source ne le sont pas sur
l'objet Node copié
, cf la
définition des guetteurs.
Petit exemple: imaginons que l'on ait besoin de créer dynamiquement un formulaire permettant à l'utilisateur de saisir un nombre quelconque de réponses, chaque réponse étant l'objet d'une validation. Cela pourrait se coder ainsi:
<!-- Création du formulaire -->
<form id="my_form">
<input type="button" id="button_add" value="ajouter" />
</form>
<script type="text/javascript">
function init(){
// on crée une ligne permettant la saisie
var _div = document.createElement("div");
var _input = document.createElement("input");
_input.setAttribute("type", "text");
// on attache un guetteur qui affiche la saisie quand le curseur quitte la zone
_input.addEventListener('blur', function(){alert("la valeur saisie est : " + this.value);}, false);
_div.appendChild(_input);
// on insère la première ligne
document.getElementById("my_form").appendChild(_div);
// chaque pression sur le bouton insérera une nouvelle ligne
document.getElementById("button_add").addEventListener('click', function(){document.getElementById("my_form").appendChild(_div)}, false);
}
</script>
Ce code ne fonctionnera pas. En cliquant sur le bouton "Ajouter", on insère bien une copie de la première ligne, mais le guetteur censé valider la saisie n'a pas été recopié par le cloneNode.
Cet exemple est bien sûr trivial, il suffirait, après le clonage, d'ajouter un nouveau guetteur sur le champs de saisie. Mais cela suppose de connaître tous les guetteurs qui ont été associés, potentiellement par d'autres portions de code, au fragment cloné. En l'absence d'interface pour connaître ces guetteurs. le problème est difficile à résoudre. C'est pour le contourner que je me suis enfin intéressé à XBL, dont je vous parlerai dans les prochains jours (ce billet ne servait qu'à liquider ce problème auquel je me suis heurté vainement pendant pas mal de temps en codant Couac )
(toute ceci ne concerne que Firefox. Il parait que les récentes versions du malware au 'e' bleuté dupliquent les guetteurs lors d'un cloneNode. Je n'ai pas été vérifier)
lundi 14 juillet 2008
Créez vos prototypes d'interface dans Firefox avec Pencil
Par Clochix le lundi 14 juillet 2008, 01:57 - Technoweb
Je cherche depuis très longtemps un outil libre pour créer rapidement des prototypes d'interface ou de pages web à insérer dans un storyboard. J'ai essayé différents outils de dessins comme Dia ou de conception (Nvu), sans jamais en trouver qui me satisfasse vraiment.
Je découvre aujourd'hui un petit nouveau, Pencil, qui m'a l'air prometteur. Il permet de créer des pages, d'y insérer des composants et d'enregistrer le tout sous forme d'images PNG. Les composants fournis couvrent la majorité des besoins des interfaces classiques: zones de textes, images, champs de formulaire, etc. On peut modifier les propriétés des éléments, les re-dimentionner, les faire pivoter, soigner leur disposition (alignement, chevauchement, etc). Il est également possible d'insérer des annotations sur la page. Bref, tout ce qu'il faut pour décrire rapidement une interface en quelques clics.
A l'usage, Pencil se révèle à la fois simple et pratique. Il faudra bien sûr que je l'essaie sur de vrais projets, mais le premier contact est plutôt positif.
Techniquement, Pencil utilise le moteur de rendu Gecko, qui motorise Firefox. On peut donc l'installer comme une extension Firefox (un fichier xpi de moins de 400ko !), ou comme une application à part entière, qui s'exécute grâce à XULRunner. Bien que relativement jeune, le projet dispose d'une interface soignée et d'un site web avec quelques documentations.
Pencil est un projet libre (sous GPL v2), et les développeurs viennent de rendre le source accessible sur Google Code.
XUL, GPL, je crois bien que je vais l'adopter
Hop, un petit exemple de
l'interface:
mercredi 12 décembre 2007
Ya un Couac, ou la naissance d'une appli web
Par Clochix le mercredi 12 décembre 2007, 10:30 - Technoweb
Ce blog est en sommeil depuis longtemps, par manque de temps pour m'en occuper. La faute au salariat et à ma plongée pendant quelques mois dans le codage d'une application web, Couac. Aujourd'hui, elle a atteint un niveau qui commence à la rendre utilisable, même si je butte sur une erreur de choix architectural qui risque de lui être fatale. Et comme je n'ai plus guère de temps pour m'en occuper, il est temps que je la rende publique, dans l'espoir qu'elle puisse servir et que d'autres contributions viennent l'améliorer.
mercredi 8 août 2007
Firefox 3 implémente les "cross site XMLHttpRequest" !
Par Clochix le mercredi 8 août 2007, 21:56 - Lézarderies
En parcourant la liste des
évolutions de la dernière version de test de firefox (FF 3a7) j'ai eu la
surprise de tomber sur cette note : Cross site XMLHttpRequest
specification implemented
. Firefox 3 pourra utiliser XMLHttpRequest pour
envoyer des requêtes ailleurs que sur le site d'origine de la page !
vendredi 19 janvier 2007
Concevoir des applications web selon un modèle événementiel
Par Clochix le vendredi 19 janvier 2007, 18:16 - Technoweb
Je suis tombé sur un fort intéressant billet de Christian Heilmann publié sur le blog de YUI. Il suggère d'utiliser une approche événementielle pour concevoir des applications web.
lundi 25 décembre 2006
Sur la route de Firefox 3
Par Clochix le lundi 25 décembre 2006, 23:19 - Lézarderies
Alors qu'une première version de Firefox 3 alpha est sortie il y a quelques jours, Tristan signale une présentation des futures nouveautés de Gecko 1.9 par Stuart Pavlov. Petit résumé de ce que j'ai cru comprendre... euh et de quelques recherches dans les roadmaps du projet.
lundi 31 juillet 2006
Thunderbird 2 pointe son museau et autres nouvelles du Lézard
Par Clochix le lundi 31 juillet 2006, 19:30 - Lézarderies
Un première version de test de Thunderbird 2 vient de sortir, pendant que les versions stables de FF et TB passent la 1.5.0.5, correction de quelques soucis de sécurité obligent. Et la communauté du lézard continue s'activer...
dimanche 23 juillet 2006
Nouvelles du lézard
Par Clochix le dimanche 23 juillet 2006, 23:08 - Lézarderies
La première version béta de Firefox 2 est sortie, la fondation Mozilla lance une nouvelle opération d'évangélisation pour avoir son nom gravé sur un mur, et on commence parler de plus en plus de Firefox 3
« billets précédents - page 1 de 2
