Aller au contenu | Aller au menu | Aller à la recherche

logo

Alt-I, des informations alternatives

Alt-I est un blog traitant d'informatique généraliste et de cultures alternatives.

mardi, 12 février 2008

Menu en colonne en Javascript

Xylpho voulait pour son site, un menu en colonne comme le fait Mac OS X :

Menu Colonne Mac OS X

Ce menu devait être à la fois accessible, référençable et dynamique. Donc, pas de flash ! Javascript à la rescousse. Je lui ai donc codé une classe JS qui construit un menu en colonne à partir de listes imbriquées…

Lire la suite...

vendredi, 4 janvier 2008

Requêtes Ajax et Internet Explorer

J'inaugure une nouvelle catégorie "IE SUX" dans laquelle j'exprimerais mes coup de gueules envers les malfonctions de cette bouse infâme qu'est Internet Explorer. Aujourd'hui, IE et les requêtes Ajax.

Un bug sur Over-blog : impossible de mettre un caractère accentué à un nom de catégorie sous IE. Celui-ci envoie systématiquement le string en ISO au lieu d'UTF-8.

Après moulte fouilles et tentatives de debug, j'ai finalement trouvé la cause du problème. Il s'agit en fait d'un bug de l'objet ActiveX XMLHTTP de IE (6 et 7). Lorsque l'on envoie des données via une requête Ajax en Get, IE se fait un malin plaisir à envoyer la donnée en tant que UTF-8, mais en réalité en ISO. D'où la réception d'un caractère foireux. Par contre, si les données sont envoyées en Post, aucun problème, c'est de l'UTF-8 qu'il envoit.

Conclusion, envoyez toute vos requêtes Ajax en Post. Merci Microsoft.

samedi, 8 septembre 2007

Ajax, navigation et accessibilité… Exemple pratique

J'ai codé à l'arrache un exemple pratique pour illustrer mon astuce concernant la navigation en Ajax accessible. Bon, c'est pas encore top au point, mais ça fonctionne nickel sous Firefox. Sous Safari 2, l'historique n'est pas modifié donc, pas de précédent ou suivant. Seul le rechargement de page fonctionne. Opera 9.5, seul le bouton Suivant ne fonctionne étrangement pas. Et IE, j'ai pas testé : j'ai pas envie de lancer VMWare : j'attends vos retours en commentaires.

Donc, de quoi s'agit il ? Nous avons une liste paginée. Sont affichés la liste des articles de ce blog par lot de 10 éléments. Une pagination en dessous permet d'afficher les 10 éléments suivants grâce à Ajax. Vous constaterez que lors d'un clic sur un numéro de page, une ancre s'ajoute à l'url. Mais aucun rechargement de page ne s'effectue.

Faîtes donc le test suivant : naviguez de page en page, puis rechargez la page. Vous vous retrouverez à la même pagination où vous étiez \o/ Attention, ce n'est pas fini. Cliquez sur le bouton précédent de votre navigateur… Pas de rechargement ni de changement de page, mais vous voilà quand même à la pagination précédente, toujours en ajax :o Revenez donc en arrière deux ou trois fois, puis repartez en avant. Même principe. Tout se charge par Ajax.

Voilà une application Ajax totalement accessible et qui reste utilisable comme tout site traditionnel.

Ah oui, ça se passe ici :

Exemple pratique pour rendre Ajax accessible

La prochaine étape sera d'écrire un module pour YUI afin de faciliter l'implémentation de cette méthode.

dimanche, 26 août 2007

Ajax, navigation et accessibilité…

Quand on fait un site tout en Ajax, la problématique principale est l'accessibilité. Quand le contenu de la page web est chargée avec Ajax, il n'y a plus de changement physique de page, donc d'url. Du coup, les boutons précédents, suivant et recharger du navigateur ne serve à rien, hormis ramener à la page d'accueil du site. Sans débattre sur l'utilité de faire un site 100% ajax, voici un moyen de ne pas perdre le fil de la navigation.

Lire la suite...

mercredi, 22 août 2007

Annuler le changement de page

Ahah !! Je l'ai enfin trouvé cet événement javascript ! Ça faisait un moment que je le cherchais mais que je n'en voyais pas la queue ! Je parle de l'event qui permet d'afficher un dialogue de confirmation lors du changement de page, ceci afin d'éviter de perdre le contenu d'un formulaire par exemple.

Et bien cet événement js, ce n'était simplement que onbeforeunload !!

On met ça en place de la façon suivante :

window.onbeforeunload = function(){return 'Votre Message';}

Pour l'essayer, , puis essayez de partir d'ici ;)

EDIT : J'ai trouvé comment faire fonctionner le bouzin IE… Il faut placer l'événement non pas sur window, mais sur body… Merci Microsoft encore de respecter les normes…

document.body.onbeforeunload = function(){return 'Votre Message';}

Il faut mettre les deux car pour les vrais navigateurs, ça reste dans window. On est habitué au code en double…

Vous pouvez essayer en cliquant sur le bouton

- page 1 de 4