Archive pour la catégorie ‘JavaScript’

Quelques trucs sur Javascript #1

Jeudi 26 mars 2009
Packed VS minified

Il existe deux méthodes couramment utilisée pour alléger les javascripts :

  • En les “compactant” : le code est alors ré-écrit en une version nettement plus compacte et surtout nettement moins lisible.
  • En utilisant jSmin : là le script est juste allégé de tous ses commentaires et espaces superflus. Il est moins compact mais reste cependant relativement lisible.

En général la version “compactée” est environ un tiers moins lourde que la version “minifiée” mais en contrepartie, l’exécution est presque deux fois plus lente. Et donc le ressenti côté utilisateur est nettement dégradé dans la version compactée. La version minifiée est donc en général préférable, d’autant que pour le debug c’est nettement plus pratique !

La fonction parseInt

Cette fonction permet, comme son nom l’indique, de convertir une chaine en entier. A priori rien de bien compliqué. Son deuxième paramètre permet de spécifier la base dans laquelle on se place. Rien de compliqué non plus.

Là où ça peut un peu plus surprendre si on lit la doc trop rapidement, c’est qu’en l’absence du deuxième paramètre, si la chaine commence par un zéro, la conversion se fait en octale, soit en base huit et non dix. Cette fonctionnalité semble être dépréciée mais elle est toujours prise en compte.

On a donc les résultats suivants :

  • parseInt("000") -> 0
  • parseInt("001") -> 1
  • parseInt("002") -> 2
  • parseInt("003") -> 3
  • parseInt("004") -> 4
  • parseInt("005") -> 5
  • parseInt("006") -> 6
  • parseInt("007") -> 7
  • parseInt("008") -> 0
  • parseInt("009") -> 0
  • parseInt("010") -> 8
  • parseInt("011") -> 9
La console d’erreur de Firefox

Dans un contexte d’extension (ou au moins dans un contexte signé il me semble), il est possible d’écrire des messages dans la console d’erreur de Firefox via JavaScript.

Par contre (du moins dans certaines versions), tenter de loguer un message vide fait planter la console. Elle continue à accumuler les message mais il faut la fermer et la rouvrir pour les voir. Chose très agaçante quand on ne sait pas d’où ça vient…

  • Print this article!
  • Turn this article into a PDF!
  • E-mail this story to a friend!
  • Facebook
  • Twitter
  • del.icio.us
  • Digg
  • Google Bookmarks
  • BlogMemes Fr
  • Wikio FR
  • Netvibes

JavaScript Debugger

Dimanche 22 juin 2008

Quand on a travaillé un peu sur des sites ou applications utilisant des JavaScript volumineux, on se rend compte assez vite que c’est laborieux. Les erreurs sont mal remontées, on n’a pas de stack trace, etc. Firefox est déjà largement au dessus d’Internet Explorer à ce niveau en fournissant une console d’erreur nettement plus lisible et fonctionnelle mais ça reste insuffisant sur des scripts complexes et fortement découpés en de nombreuses fonctions élémentaires.

Une solution au problème : JavaScript Debugger, une extension pour Firefox qui, comme son nom l’indique, implémente un débuggeur JavaScript.

JavaScript Debugger - fenêtre principale

Comme sur les débuggeurs disponibles pour les autres langages, on peut donc placer des point d’arrêt (breakpoint) permettant une exécution pas à pas du script, avec à chaque étape la possibilité d’inspecter toutes les variables définies et leurs valeurs. Ça ne résout pas tout mais ça aide grandement à comprendre ce qui arrive !

Malheureusement, cette extension est encore loin d’être parfaite : elle est assez lourde et ne se ferme pas toujours vraiment lorsqu’on ferme la fenêtre et même en fermant toutes les fenêtre Firefox, il arrive qu’il reste toujours une instance de Firefox qui traine dans les processus en cours et qu’il faut tuer à la main (sous Windows du moins, je ne l’ai pas testé sur un autre système).

Donc ce n’est pas parfait mais ça a le mérite de combler un gros manque, donc ça mérite le coup d’œil :)

Sinon, l’extension Firebug est censée fournir une partie de ces fonctionnalités également mais, jusqu’à présent, à chaque fois que j’ai tenté de l’installer elle m’a causé plus de problèmes qu’autre chose (instabilité du navigateur) donc je n’ai pas approfondi…

  • Print this article!
  • Turn this article into a PDF!
  • E-mail this story to a friend!
  • Facebook
  • Twitter
  • del.icio.us
  • Digg
  • Google Bookmarks
  • BlogMemes Fr
  • Wikio FR
  • Netvibes

Facilitez-vous le Javascript avec jQuery

Dimanche 7 octobre 2007

jQuery est une sympathique bibliothèque Javascript. Elle permet de manipuler la page assez facilement via un système de requêtage des éléments reprenant la les sélecteurs CSS. Du coup c’est assez simple et nettement plus court que de travailler avec du DOM.

Par ailleurs elle permet d’ajouter des effet aux différents événement sans écraser ceux qui seraient déjà présents, d’appliquer des effets de masquage/affichage progressif aux éléments, etc
Des extensions proposent différents éléments d’interface évolués comme des zones redimensionnables, un datepicker, des onglets…

Mais surtout l’ensemble est multi-navigateur, ce qui évite d’avoir à se préoccuper trop souvent d’Internet Explorer qui constitue un véritable cauchemar dès qu’on veut faire quelque chose d’un peu évolué.

J’ai fait quelques tests ces derniers jours sur le script de mes forums et c’est plutôt concluant : un code nettement plus court et vachement plus propre !

Bref, une bibliothèque qui vaut qu’on lui consacre un peu de temps.

  • Print this article!
  • Turn this article into a PDF!
  • E-mail this story to a friend!
  • Facebook
  • Twitter
  • del.icio.us
  • Digg
  • Google Bookmarks
  • BlogMemes Fr
  • Wikio FR
  • Netvibes

Le débugage des JavaScript sous Firefox

Mardi 8 mai 2007

Pour le débugage JavaScript, Firefox dispose de base d’une console d’erreurs JavaScript. Cette console est accessible via le menu « outils » sous le nom « console d’erreur » et liste trois types d’informations :

  1. les erreurs : il s’agit des erreurs que Firefox ne parvient pas à traiter et qui entrainent un arrêt pur et simple de l’exécution du script. Ces erreurs doivent être corrigées impérativement pour que le script s’exécute jusqu’au bout.
  2. les avertissements (warnings) : ceux-ci ne sont pas bloquants. Ils relèvent juste une erreur minime ou un non-respect de la norme javascript (variable non-déclarées, fonctions ne retournant pas toujours de valeur, etc.). Il n’est pas absolument nécessaire de les corriger mais il vaut mieux les corriger et ce pour deux raisons : d’une c’est par principe toujours mieux de coder proprement et de deux ils peuvent être cause de bugs puisque le script ne se comportera pas forcément de la façon dont vous l’imaginiez.
  3. les messages : il s’agit de simples messages qui peuvent être envoyés depuis du code javascript dans certains cas. Il ne s’agit pas d’erreurs, juste d’informations diverses en général utilisés lors du débugage d’extensions.

La plupart des messages d’erreur ou d’avertissement sont accompagnés d’un numéro de ligne, d’un nom de fichier et d’un lien direct pour visualiser la ligne posant problème.

De base cette console est déjà très efficace (comparée à son homologue sous IE, c’est déjà le jour et la nuit). Cependant il existe également des extensions qui peuvent permettre d’aller plus loin :

  • Prévisualisation - Console²Console² :
    Cette extension permet de filtrer plus précisément les messages affichés par la console. Elle permet également le passer le contrôle en mode « strict » ce qui augmente le nombre d’avertissements en cas de non-respect des normes. Elle permet également d’afficher certaines erreurs dans les fichiers CSS et XML évalués par le navigateur.
  • Prévisualisation - FirebugFirebug :
    Celle-ci permet de faire pas mal de chose en ce qui concerne le débugage aussi bien JavaScript que CSS et HTML. Elle semble notamment permettre une exécution pas à pas du JavaScript. Je ne l’ai pas testée très en détails, peu convaincu au premier abord… Cependant elle semble avoir bonne réputation, il doit donc y avoir de bonnes choses à en tirer.

Et IE dans tout ça ? Ben là c’est pas la joie… Outre le fait que son moteur JavaScript n’a quasiment pas bougé depuis IE6, ce qui implique un retard énorme, sa fenêtre d’erreur est des plus minimalistes. Elle se limite en effet à un message d’erreur rarement clair et pas toujours approprié, un numéro de ligne approximatif et aucun nom de fichier (cela ne pose pas de problème pour un script simple sur un seul fichier mais pour quelque chose de plus complexe répartit en plusieurs fichiers, c’est déjà beaucoup plus gênant)… Une fois de plus le navigateur de Microsoft est largement à la traine.

  • Print this article!
  • Turn this article into a PDF!
  • E-mail this story to a friend!
  • Facebook
  • Twitter
  • del.icio.us
  • Digg
  • Google Bookmarks
  • BlogMemes Fr
  • Wikio FR
  • Netvibes