Salut, et felicitation ! C'est vraiment sympa cette appli.
Maintenant, étant moi même dans mes heure perdu un amateur de codage en JS, doublé d'un coté pointilleux sur le respect des standards W3C et de l'accessibilité, j'ai quelques suggestions à te soumettre.
Une des principales critiques que l'on entend à propos du JS, c'est que ça pose des problèmes d'accessibilité.
Ta librairies pourrait à ce niveau être un peu améliorée il me semble.
Un point sur l'accessibilité
Pour l'ajout d'images à un slideshow, tu demande de remplir un tableau JS. Ne serait-il pas préférable de charger des données tirées du fichier HTML ?
Ainsi, si les images sont intégrées au document HTML, même si le JS est désactivé, les images peuvent être vue. Et les données se rapportant aux images également (titre, description, etc...). Ensuite, ta librairie JS peut récolter les informations, masquer les images d'origine et proposer une interface interactive comme tu l'a si bien fait.
Au lieu de mettre dans la page HTML une balise vide <div id="mySlideshow"></div>, on pourrais très bien imaginer que la liste des images à afficher soient placées dans cette balise DIV.
Pour la cohérence sémentique, je pense que ces images pourraient être placées dans une liste.
Et pour éviter que les images soient chargées si le navigateur du visiteur utilise du JS (ce qui peut ralentir le chargement, surtout s'il y a beaucoup d'images, et il me semble que ton script gère le chargement des images non ?) tu peux placer le tout dans une balise <noscript>, ce qui fait que le tout sera ignoré en cas d'activation du Javascript chez le client (à verifier ce point tout de même). Par contre les client sans Javascript pourront voir le contenu et en profiter.
exemple :
<div id="mySlideshow">
<noscript>
<ul>
<li>
<a href="URL_de_destination.html" title="Titre de l'image">
<img src="Fichier imge.jpg" alt="description de l'image" />
</a>
</li>
etc....
</ul>
</noscript>
</div>
(le titre pourrait être placé dans la balise IMG ou A, peu importe. On pourrait également ajouter des attributs rel aux balises A ou IMG, pour associer d'autres informations complementaires)
Il suffit ensuite de faire une simple fonction JS d'initialisation analysant le contenu de la balise #mySlideshow et en tirant les informations avec quelques outils DOM. (Tout cela se déroulant donc avant l'appel de la fonction initSlideShow(), ou étant intégré à cette fonction).
Autre suggestion...
Un point sur la simplicité d'utilisation
La gestion de l'évenement 'onload' de la page pourrait il me semble être intégré à tes scripts. Ainsi, avec ma remarque précédente en plus, la seule ligne de code que l'on aurait à ajouter au document (en plus des lignes de chargements des fichiers JS) HTML pourrait être du genre :
preLoadSlideShow('IdDeLaBaliseDivDuSlideShow');
Cette ligne pourrait même être intégré direct au fichier JS, et si l'utilisateur veut la modifier il peux éditer le fichier JS. Ainsi on à une bonne séparation du HTML et du JS.
Dans la fonction préload, tu te chargerais de lancer l'écoute de l'évenement onload, et d'enregistrer l'ID de la balise contenant les données du slideShow, pour analyse une fois la page HTML chargée.
Et enfin, dernière choses ...
Un point sur la manière de coder
Tu devrais essayer de rendre ton code plus OO. On vois déjà que le principe est là, mais tout est séparé dans des fonctions multiples...
Ca demanderais probablement pas grand chose pour obtenir la même chose, mais en OO.
Tu devrais IMHO former une classe dans laquelle tout serait bien à sa place.
Un avantage direct pour toi, c'est que t'aura plus X variables globales de déclarées (une s'eule suffit), et donc t'aura plus à te torturer l'esprit pour trouver des nom de variable sans redondance (et ça évite les noms très long, et les conflits de variables avec d'autres scripts.
Et puis tu pourra tiré profit du coté OO du JS, qui est intéressant IMHO.
Par contre, niveau performences, je n'ai aucune idée de l'impact que ça peu avoir. Quelqu'un saurait dire ??
Si tu te demande ce que j'entend par plus OO, tu peux voir un exemple dans la lib Prototype que tu utilise. C'est en lisant cette lib que j'ai découvert le fonctionnement des objets JS, et ça à changé ma manière de faire du JS.
Voila, c'était mes trois copek de contribution cognitive.
En espèrant que ça pourra t'aider et t'inspirer pour la suite :)
Et si t'as besoin d'coups d'main, de conseil, ou autre (je prétend pas être très doué, ou meileur que toi, mais une ame exterieur peut parfois aider :p), hésite pas à m'contacter, j'aime vraiment beaucoup l'concept et j'trouverais bien une tite poigné d'minutes pour répondre :)
# Très sympa, petites suggestions
Posté par Nicolas Deveaud . En réponse au journal Sortie de Smooth Slideshow v1.0: Bibliothèque javascript libre de slideshows (en fondu enchainé).... Évalué à 5.
Maintenant, étant moi même dans mes heure perdu un amateur de codage en JS, doublé d'un coté pointilleux sur le respect des standards W3C et de l'accessibilité, j'ai quelques suggestions à te soumettre.
Une des principales critiques que l'on entend à propos du JS, c'est que ça pose des problèmes d'accessibilité.
Ta librairies pourrait à ce niveau être un peu améliorée il me semble.
Un point sur l'accessibilité
Pour l'ajout d'images à un slideshow, tu demande de remplir un tableau JS. Ne serait-il pas préférable de charger des données tirées du fichier HTML ?
Ainsi, si les images sont intégrées au document HTML, même si le JS est désactivé, les images peuvent être vue. Et les données se rapportant aux images également (titre, description, etc...). Ensuite, ta librairie JS peut récolter les informations, masquer les images d'origine et proposer une interface interactive comme tu l'a si bien fait.
Au lieu de mettre dans la page HTML une balise vide <div id="mySlideshow"></div>, on pourrais très bien imaginer que la liste des images à afficher soient placées dans cette balise DIV.
Pour la cohérence sémentique, je pense que ces images pourraient être placées dans une liste.
Et pour éviter que les images soient chargées si le navigateur du visiteur utilise du JS (ce qui peut ralentir le chargement, surtout s'il y a beaucoup d'images, et il me semble que ton script gère le chargement des images non ?) tu peux placer le tout dans une balise <noscript>, ce qui fait que le tout sera ignoré en cas d'activation du Javascript chez le client (à verifier ce point tout de même). Par contre les client sans Javascript pourront voir le contenu et en profiter.
exemple :
<div id="mySlideshow">
<noscript>
<ul>
<li>
<a href="URL_de_destination.html" title="Titre de l'image">
<img src="Fichier imge.jpg" alt="description de l'image" />
</a>
</li>
etc....
</ul>
</noscript>
</div>
(le titre pourrait être placé dans la balise IMG ou A, peu importe. On pourrait également ajouter des attributs rel aux balises A ou IMG, pour associer d'autres informations complementaires)
Il suffit ensuite de faire une simple fonction JS d'initialisation analysant le contenu de la balise #mySlideshow et en tirant les informations avec quelques outils DOM. (Tout cela se déroulant donc avant l'appel de la fonction initSlideShow(), ou étant intégré à cette fonction).
Autre suggestion...
Un point sur la simplicité d'utilisation
La gestion de l'évenement 'onload' de la page pourrait il me semble être intégré à tes scripts. Ainsi, avec ma remarque précédente en plus, la seule ligne de code que l'on aurait à ajouter au document (en plus des lignes de chargements des fichiers JS) HTML pourrait être du genre :
preLoadSlideShow('IdDeLaBaliseDivDuSlideShow');
Cette ligne pourrait même être intégré direct au fichier JS, et si l'utilisateur veut la modifier il peux éditer le fichier JS. Ainsi on à une bonne séparation du HTML et du JS.
Dans la fonction préload, tu te chargerais de lancer l'écoute de l'évenement onload, et d'enregistrer l'ID de la balise contenant les données du slideShow, pour analyse une fois la page HTML chargée.
Et enfin, dernière choses ...
Un point sur la manière de coder
Tu devrais essayer de rendre ton code plus OO. On vois déjà que le principe est là, mais tout est séparé dans des fonctions multiples...
Ca demanderais probablement pas grand chose pour obtenir la même chose, mais en OO.
Tu devrais IMHO former une classe dans laquelle tout serait bien à sa place.
Un avantage direct pour toi, c'est que t'aura plus X variables globales de déclarées (une s'eule suffit), et donc t'aura plus à te torturer l'esprit pour trouver des nom de variable sans redondance (et ça évite les noms très long, et les conflits de variables avec d'autres scripts.
Et puis tu pourra tiré profit du coté OO du JS, qui est intéressant IMHO.
Par contre, niveau performences, je n'ai aucune idée de l'impact que ça peu avoir. Quelqu'un saurait dire ??
Si tu te demande ce que j'entend par plus OO, tu peux voir un exemple dans la lib Prototype que tu utilise. C'est en lisant cette lib que j'ai découvert le fonctionnement des objets JS, et ça à changé ma manière de faire du JS.
Voila, c'était mes trois copek de contribution cognitive.
En espèrant que ça pourra t'aider et t'inspirer pour la suite :)
Et si t'as besoin d'coups d'main, de conseil, ou autre (je prétend pas être très doué, ou meileur que toi, mais une ame exterieur peut parfois aider :p), hésite pas à m'contacter, j'aime vraiment beaucoup l'concept et j'trouverais bien une tite poigné d'minutes pour répondre :)
++