Tous les 2 jours a peu pres, quelqu'un la ramene en disant que konqueror supporte Acid2, et que donc par conséquence il a un excellent support des standards, pas comme firefox par exemple... Je ne reviendrais pas sur le fait que passer Acid2 ne veut strictement rien dire sur le support CSS des navigateurs qui y parviennent, mais plutot sur un autre point de détail: ya pas que le CSS dans la vie ! (nota: le pire dans l'histoire étant que Acid 2 ne concerne pas uniquement CSS, c'est un peu un fourre tout, meme si les parties interessantes sont surtout au niveau du CSS)
Par exemple, un point qui devrait interesser de plus en plus de gens en ce moment, avec tout ce buzz autour de du Web2, c'est le support DOM et EcmaScript. En l'occurence, je vais vous parler d'un truc génial que personne n'utilise sur le web, puisque IE ne le supporte pas: le Document Object Model Traversal. Sous ce nom se cache des interfaces pour naviguer dans un document, et executer diverses actions sur une ou plusieurs parties de celui-ci.
Voila donc un petit script tres simple, qui parcourt le document à la recherche de Nodes tres précises. J'utilise une variante de ce script dans ma nouvelle version de la DLFPToolbar, et cela accelere grandement les choses (encore plus dans une version que je n'ai pas encore publié mais sur laquelle je reviendrais plus tard de toutes manieres, parceque elle montre tout l'interet de passer par un Treewalker plutot que par un systeme parsant a la main):
window.onload = beamMeUp;
function beamMeUp()
{
function acceptNode(node)
{
if (node.hasAttribute("class"))
{
if (node.className == "ok")
return NodeFilter.FILTER_ACCEPT;
}
return NodeFilter.FILTER_SKIP;
}
var treeWalker = document.createTreeWalker(document.body,
NodeFilter.SHOW_ELEMENT,
acceptNode,
false);
if (treeWalker)
{
var node = treeWalker.nextNode();
while (node)
{
alert(node);
node = treeWalker.nextNode();
}
}
}
Grosso Modo, ca parcourt le document a la recherche d'elements avec class="ok", et ca alert() a chaque fois que ca en trouve un. En effet, vous l'aurez compris en regardant la spec citée plus haut, la fonction acceptNode() est un filtre, appellé automatiquement, de sorte que lorsque je parcourt les Nodes de mon Treewalker, je ne vois que les Nodes pour lesquelles ma fonction a renvoyé NodeFilter.FILTER_ACCEPT.
Enfin ca, c'est la théorie.
Dans Opera, Safari, Firefox, ca marche tres bien. Dans la derniere version de Konqueror, ca alert() a chaque coup, la fonction acceptNode() n'est jamais appellée. Si quelqu'un a une solution, je veux bien l'entendre, je n'ai pas tres envie de rappeller ma fonction a la main a chaque fois. Remarquez, ya du mieux, avant, toute mention d'un Treewalker lui donnait des boutons (et déjà à l'époque c'était moi qui avait trouvé le bug, je me demande si ya d'autres gens qui s'interessent un peu au support DOM de konqueror 
PS: J'ai pour le moment la flemme de reporter le bug, pour ceux qui voudraient le faire avant que je finisse par créer un compte sur le bugzilla de KDE, j'ai mis mon testcase en ligne.








Commentaires
Avec Xpath p.e ?
tu ne selectionnes que les noeuds qui t'interessent exactement plus besoins de les filtrer,
www.codestore.net/store.n...
avec la chaine :
//p[contains(@class,'ok')]
Le but etait quand meme de faire un truc qui fonctionne dans le plus de navigateurs possibles
Par ailleurs, je ne l'ai pas mentionné directement dans mon post, parceque je reservais ca pour plus tard, mais on peut renvoyer NodeFilter.FILTER_REJECT, ce qui a pour effet de bannir l'element et tous ses fils: du coup, si on connait un peu ce qu'on a parser, on peut aller beaucoup, beaucoup plus vite...
Cela dit, je testerais Xpath, c'est une piste interessante.
sortir ça
"je vais vous parler d'un truc génial que personne n'utilise sur le web, puisque IE ne le supporte pas"
puis sortir ça maintenant
"Le but etait quand meme de faire un truc qui fonctionne dans le plus de navigateurs possibles"
apres avoir pondu ça avant:
totalementcretin.apinc.or...
(et encore même pas pondu, copier/coller sauvage d'un newsgroup sans rediriger sur le lien de la discussion complète)
c'est sur le contexte devient très marrant.
Le but etait que ca fonctionne sur le plus de navigateurs possibles, mais je savais des le depart que IE serait out. Ya une tres bonne raison a ca: je n'avais pas IE au moment des faits, et de toutes maniers il s'agit d'une toolbar pour linuxfr quand meme... le voila le contexte...
PS: Sinon, pour le post sur TC, lorsque je l'ai posté il n'etait pas encore arrivé sur google groups et compagnie. Si il n'y que ca pour te faire plaisir, je rajoute les liens.
C'est bien ça que je reproche, tu sais dès le depart que cela ne marchera pas sous IE mais tu t'en fou..
Ta toolbar là, elle ressemble de plus en plus à un plugin inaccessible pour plein de monde...
le voila ton contexte
tu bloques délibérement l'accès à cette toolbar pour tous ceux qui ont IE, et limite konqueror
Un admin qui serait bloquer sur NT4 et IE par exemple et bah même si il a linux chez lui, tu le bloques.
Mais il ne faut surtout rien te dire car toi tu sais ce qu'est l'accessibilité.
La nouvelle version de la toolbar est justement bloquée a cause des problemes qu'elle pose actuellement dans konqueror. Vu les améliorations en terme de rapidité, c'est dommage d'ailleurs, mais je suis dessus, d'ou ce post d'ailleurs.
Je n'ai jamais bloqué déliberement cette toolbar a aucun navigateur, et meme si c'etait le cas, c'est une fonctionalité supplémentaire offerte uniquement aux utilisateurs de *linux*fr. Elle n'est nullement obligatoire, et d'ailleurs beaucoup de personnes sur linuxfr ne l'activent pas.
Je suis neamoins parfaitement conscient que le fait qu'elle ne marche pas sous IE est un probleme, je te propose d'ailleurs de fournir un patch corrigeant ceci. Tu trouveras sans peine la version actuelle et la version de developpement (ainsi que leurs historiques respectifs) pour t'aider dans ta tache. D'avance merci.
Sinon, en ce qui concerne l'accessibilité, ca n'a absolumment rien a voir. Cela étant dit, tu seras ravi d'apprendre qu'elle satisfait les personnes n'utilisant que le clavier a l'aide d'accesskeys, et que la prochaine version sera d'ailleurs legerement améliorée sur ce point.