Dur dur de se lever un samedi matin, alors qu'il fait beau, et de prendre en pleine tronche cette nouvelle déconcertante : les prochaines versions de Mozilla et Firefox supporteront cette ignominie de document.all, afin d'être compatible avec les sites optimisé pour IE.

Alors que depuis le début, mozilla.org soutient et respecte les standards au sein de son navigateur, voilà qu'il se met à copier les bêtise de IE (enfin bon, c'est vrai que Gecko copie depuis un certain temps déjà les bugs de IE quand il est en mode "quirks" mais là, c'est le ponpon). Un pas en arrière. Un jour noir pour les standards.

On peut se consoler par le fait qu'un if(document.all) continuera à renvoyer false dans Gecko, et qu'un warning sera généré dans la console javascript. Mais j'aurais preféré un non support de document.all et l'affichage d'une popup ou d'une icône indiquant à l'utilisateur que le site est mal foutu et qu'il risque de mal s'afficher. Cela aurait été plus pédagogique pour les webmestres en herbe. M'enfin bon, les utilisateurs réticents qui se plaignent que certains sites ne passent pas avec Firefox, pourront maintenant migrer vers Firefox.

Pourquoi est-ce une bêtise d'inclure ça dans Gecko ?

  • parce que maintenant les developpeurs qui développent avec leur pied ne verront plus que leur site est développé avec les pieds. Ils ne prendront donc pas la peine de regarder du coté des standards. Ainsi donc, ils ne vont pas apprendre le DOM correctement, et si ils sont confronté à l'utilisation du DOM dans un autre langage, ils risquent d'avoir une désagréable surprise... (Le DOM est un standard, je le rappelle).
  • D'un point de vue logique, pouvoir utiliser document.all alors qu'un test if(document.all) ne passe pas, c'est contradictoire et peux en perturber plus d'un (même si cela est nécessaire de faire comme cela pour gecko, pour que les tests de navigateurs continuent à réagir comme ils ont été prévu). Je vois déjà certains webmestres prendre ce if(document.all) comme un bug dans Firefox...
  • que veut dire exactement document.all ? Je trouve que même la définition de cette propriété dans MSDN est floue. Du coup, c'est certain, le document.all de Mozilla ne peut être un véritable clone du document.all de IE, et certains scripts optimisé pour IE risquent de ne pas fonctionner correctement (ils seront tout de même une minorité).
  • cela ne va pas résoudre toutes les incompatibilités qui existent encore avec IE.

Non franchement c'est nul. D'autant plus qu'apparement, cette fonctionnalité n'est pas limité au mode "quirks" et fonctionnerait donc aussi dans les pages conformes aux standards (à vérifier). Si c'est vrai, c'est vraiment, vraiment n'importe quoi.

Mise à jour : je viens de télécharger la dernière version de test de Firefox, et de tester une page web utilisant le document.all. Je confirme : c'est vraiment, vraiment n'importe quoi. En fait, c'est pire que ce que je croyais. En effet, donc, le document.all de mozilla fonctionne aussi bien en mode standard qu'en mode quirks. Mais le pire, c'est que l'implementation du document.all de mozilla ne fait même pas un minimum pour ressembler à celui de IE ! La collection all ne contient que les élements qui ont un id. Alors que celle de IE contient (au moins) les élements qui ont un id, et les élements de formulaires qui ont un attribut name . Or l'usage du document.all se fait trés souvent en rapport avec les éléments de formulaire !!!. Conclusion : beaucoup de sites vont continuer à bogguer dans Mozilla :-/ Il faut vraiment qu'ils corrigent ça !

Mise à jour 2 : pour l'histoire du support des élements de formulaire avec l'attribut name, ils en ont discuté sur le bug correspondant à document.all sur bugzilla. En fait, aprés avoir fait quelques statistiques d'usage, il en est ressorti que seulement 20% des sites utilisait document.all sur des éléments de formulaire avec l'attribut name. Et donc, que ce n'était pas assez significatif pour inclure ces éléments dans document.all. N'importe nawak.