Tag Archives: javascript

Déboguer PhantomJS: Page Load Fails

phantomjs

PhantomJS est un super outil pour automatiser des tâches et pour faire du test de sites.

Je l’utilise quotidiennement pour analyser le contenu de mes pages et pour réaliser des captures d’écran de sites web.

Simple d’utilisation, vous pouvez coder vos propres scripts JavaScript afin d’automatiser des opérations avec PhantomJS.

PhantomJS propose la commande page.open() qui permet d’émuler un navigateur (browser) qui visiterait une page web.

Malheureusement l’api de PhantomJS ne permet pas de déterminer la raison d’un échec de chargement d’une page.

Les callbacks de PhantomJS vous nous permettre de déboguer et diagnostiquer une erreur de type “Page Load Fails” qui se produit après l’utilisation de la fonction page.open().

Créer un serveur HTTPS avec NodeJS et Express

nodejs

NodeJS est la grande tendance actuelle et de nombreux projets émergents se basent dessus.

Express, module HTTP de NodeJS, permet de réaliser rapidement un serveur HTTP dans votre application NodeJS.

Il existe de nombreux tutoriaux sur le net permettant d’instancier un serveur Web en quelques lignes de code en utilisant Express.

Mais la réalisation de plusieurs applications pour mes clients a fait émerger un besoin récurrent: créer un serveur HTTPS en NodeJS (HTTP over SSL/TLS).

En effet, le HTTPS permet de crypter les données qui transitent entre les clients et le serveur, ce qui permet de sécuriser un minimum les transactions, qui ne transistent plus en clair sur le réseau.

Nous allons donc voir comment créer un serveur HTTPS en NodeJS avec le module Express.

[JS] Supprimer le cache de TableSorter jQuery

jquery-tablesorter

TableSorter est une extension javascript de jQuery qui permet d’utiliser des fonctionnalités de filtre et de tri sur les tables HTML.

Simple à utiliser, je l’utilise dans quasiment tous mes projets Web mais aujourd’hui j’ai été confronté à un problème.

En effet, j’ai une page HTML dans laquelle j’ai une table qui utilise TableSorter.
Les lignes de cette table sont mises à jour chaque minute via une requête ajax.

Le problème est que le plugin TableSorter met en cache chaque ligne (<tr>…</tr>). Du coup si je clique sur une colonne pour la trier après avoir eu 5 rafraichissements, je me retrouve avec toutes les lignes depuis 5 minutes, ce qui rend la table inutilisable.

La solution est donc de supprimer le cache de TableSorter. Malheureusement, cette fonctionnalité n’est pas disponible dans la version originale. Il nous faut donc la modifier.

Pour celà, ouvrez le fichier jquery.tablesorter.js et remplacer:

$this.bind("update", function () {
	var me = this;
	setTimeout(function () {
		// rebuild parsers.
		me.config.parsers = buildParserCache(me, $headers);
		// rebuild the cache map
		cache = buildCache(me);
	}, 1);

par le code suivant:

$this.bind("update", function (e) {
	var me = this;
	setTimeout(function () {
		// rebuild parsers.
		me.config.parsers = buildParserCache(me, $headers);
		// rebuild the cache map
		cache = buildCache(me);
		if(e.resort||e.re_sort) { $(me).trigger("sorton", [config.sortList]); }
		if(e.callback) { e.callback.call(me, config); }
	}, 1);

Ensuite à chaque fois que vous mettez à jours les lignes de votre table, il vous suffit d’appeler:

$("#matable").trigger({type:'update', resort:true});

Et voilà, le cache est désormais supprimé et vous pouvez trier votre table correctement.

Si vous souhaitez vous pouvez télécharger la version modifiée jquery.tablesorter.js