lundi 29 octobre 2007

Reculer pour rester immobile !?

Encore un titre bateau me direz vous ?

Même pas vous répondrais-je, car ce titre est né de la savante analyse qu'il m'a été forcé de réaliser alors que je construisais un site pour un ami. Chose aisée sur le papier et dans les textes, le but du jeu étant juste de reprendre un site existant et conçu sur une base de Frameset, pour en faire un site moderne, sur une seule page avec plein de morceaux de css dedans.

Comme tout Webmestre qui se respecte, j'ai tout d'abord procédé à une petite analyse des besoins du propriétaire du site afin de préparer mon code en fonction. Et bien entendu, il a fallu débattre sur la pertinence de maintenir la compatibilité avec les logiciels à base Neandertal Technology du phagocyteur de Richemond.

Mon client et néanmoins ami étant artiste, son site doit en premier lieu pouvoir lui servir de CV, donc être visible du plus grand nombre.

Soit, le sort en est jeté, le site sera compatible avec Internet Explorer !

Bien, il ne faut pas trop brusquer les choses, css et Internet Explorer dans la même phrase, c'est déjà un peu comme qui dirait chercher les ennuis, mais bon, le client est roi et en allant doucement, balise par balise, attribut par attribut, on devrait arriver à faire un truc pas trop mal.

On évite les positionnements relatifs, on abuse de l'absolu, on évite les margin et les padding, on fixe ce qui doit l'être et ça roule… pas du tout !

Safari OK, FireFox OK, Opera OK, IE5 OK, IE7 OK, IE6… en vrac total !

IE6 n'aime pas les éléments fixés avec l'attribut de positionnement fixed, enfin ce n'est pas qu'il ne l'aime pas, disons plutôt que pour lui cet attribut n'existe même pas, l'élément est alors fixé… à la page dont il continue bêtement à suivre les mouvements là où il devrait rester sagement immobile comme savent si bien le faire son prédécesseur et son successeur.

Après petite enquête, j'ai fini par trouver pourquoi et comme d'habitude avec les produits de cet éditeur, l'explication est aussi fumeuse qu'hallucinante, pour ne pas dire surréaliste, voire édifiant !

Effectivement, cet attribut n'est plus pas reconnu par IE6 pour des raisons qui me restent sincèrement inaccessibles, il faut dire aussi que je n'ai qu'un cerveau, je ne suis donc pas vraiment à même de saisir la quintessence de ce genre de décisions hautement commerciales techniques.

Rassurez-vous Webmestres du monde entier, le Nain de Richemond à pensé à lui vous et si l'attribut fixed n'est pas plus reconnu, on peut quand même le simuler en détournant une autre fonction, ce qui, soit dit en passant, est quand même la marque de fabrique de notre ami poseur de fenêtres, pourquoi faire simple quand le compliqué est tellement moins facile à faire.

Bon certes, mais de là à en faire un billet, quand même !

Ah mais oui mais non, parce que là, le contournement vaut le détour (joli celui-là !), je m'explique Patrice…

Pour fixer un élément sous IE6, il suffit de récupérer la valeur de la position actuelle de l'ascenseur de la fenêtre avec un petit code JavaScript propre à Internet Explorer et d'utiliser cette valeur pour déplacer l'élément, ainsi, on à l'impression qu'il n'a pas bougé, c'est fort non ?

Pour faire simple, imaginons l'analogie suivante :

- L'histoire se déroule dans une gare de chemin de fer, un train est à l'arrêt et attends patiemment le sifflet du chef de gare.

- Un usager est en attente lui aussi, il n'est pas encore décidé.

- Dans cette étrange scène feutrée d'immobilisme, le quai lui aussi semble être en attente, le détail a l'air cocasse, mais avec la suite de l'histoire, il devient presque amusant, je dis presque, car d'un point de vue de Webmestre, ce n’est franchement pas le cas.

- Et bien entendu, il y a l'observateur qui regarde tout ça de plus loin, avec juste ce qu'il faut de recul et surtout d'ouverture d'esprit, car sur ce dernier point, je vous assure qu'il faut en être joyeusement doté pour ne pas sombrer dans des envies dont la morale m'interdit de dire qu'il pourrait s'agir de meurtre.

La scène est posée, deux scénarios sont possibles :

1-Le train s'en va et l'usager monte dedans !

En temps qu'observateur attentif, vous voyez un train bouger et un usager qui bouge avec alors que le quai lui reste tranquillement à sa place, ce qui est logique.

2- Le train s'en va et l'usager ne monte pas !

En temps qu'observateur attentif, vous voyez un train bouger, et un usager immobile comme le quai, ce qui est logique là aussi.

Mais voilà, grâce à IE6, nous avons désormais un troisième scénario possible :

3- Le train s'en va, mais il embarque le quai avec lui, l'usager se retrouve donc un peut contre son gré dans l'obligation de partir avec, pour rester immobile aux yeux de l'observateur, il va donc devoir marcher dans l'autre sens, c'est super logique !

Ce qui est pathétique dans cette histoire, c'est qu'il à fallut que des ingénieurs en programmation ajoutent toute une volée de codes dans Internet Explorer pour lui expliquer comment simuler une absence de mouvement par des mouvements contraires… de plus en plus logique…

Mais là où on frise la guillotine, c'est que pour justifier cette simulation, ils ont auparavant ajouté la fonction qui met le quai en mouvement… super mega logique !

Franchement, rien que pour ça je préconise un boycott général pour raison de santé, en plus ça fera du bien au trou de la sécu.

Et encore, là je ne vous ai parlé que de la philosophie, un jour, si vous êtes sage (et que vous faites un don…) je vous expliquerai le code, mais attention, c'est aussi illogique que ce billet… et aussi indigeste d'ailleurs…

Aucun commentaire: