LES FRAMES NE SONT PAS NULS
Cet article est la suite de Frames pour les nuls dont la lecture préalable est recommandée pour ceux qui ne sont pas familiers avec les frames. Les problèmes liés aux cadres sont exposés ici. Les solutions seront investiguées dans l’article Frames pour Phd en php. Il vaut mieux prendre connaissance des problèmes avant d’en aborder les solutions.
Si le principe des frames est simple, leur mise au point pour obtenir un système de navigation satisfaisant est un véritable casse-tête. Des centaines d’heures sont requises pour en ajuster le fonctionnement, ce à quoi cet article et le suivant peuvent remédier. Il faut, dès la conception, identifier les problèmes certains et leur apporter une solution adéquate.
Une grosse difficulté à laquelle se confronte le développeur est celle de la multiplication des fichiers sur disque. En effet, pour qu’une page s’affiche dans un cadre lorsqu’elle est appelée par l’internaute depuis un moteur de recherche, un autre site ou la liste de ses favoris, la page de définition des cadres doit y faire référence. L’exemple suivant sert d’illustration :
La page Texte2.htm est appelé et comporte l’instruction de chargement des cadres définis en DefCadre.htm :
<script language="javascript">
if(parent.frames.length == 0) parent.frame.location = "DefCadre.htm"
</script>Mais si DefCadre.htm comporte l’instruction de chargement de Texte1.htm au lieu de Texte2 :
<SRC=http://Rep/Texte1.htm>
Ceci cause à Texte2.htm d’être remplacé par Texte1.htm lorsque le cadre se charge. Un fichier de définition spécifique DefCadre2.htm doit donc être créé pour Texte2.htm avec l’instruction :
<SRC=http://Rep/Texte2.htm>
Et le code de chargement du cadre-parent de texte2.htm doit faire appel à DefCadre2.htm :
if(parent.frames.length == 0) parent.frame.location = "DefCadre2.htm"
Il est nécessaire de créer autant de définitions de cadres que de jeux de fichiers à afficher simultanément. Dans les gros sites comme Nostradamia, cela peut représenter plusieurs centaines de fichiers supplémentaires. L’impact sur la clarté et la gestion des fichiers est désastreux, l’espace disque requis explose et la facture de l’hébergeur peut être affectée.
L’expérience tend à prouver que les développeurs se préoccupent peu de ne pas multiplier les fichiers sur disque. La conséquence de ce développement à la petite semaine est que lorsque l’administrateur souhaite plus tard modifier l’aspect ou le contenu de son site, les modifications doivent se répéter sur des centaines de fichiers ce qui peut représenter des jours de travail. Nul doute qu’il ne refera plus l’expérience des frames.
La solution existe bel et bien et doit être conçue dès le départ. Nostradamia n’utilise que 26 cadres pour ses 800 fichiers et pourtant ce sont bien les pages demandées qui s’affichent.
La 5ème démonstration concerne les définitions de cadres dotés d'une extension php et placés sur un serveur distant. Texte5.htm s’affiche d’abord en Cadre3 et il est demandé à l’internaute de cliquer sur un lien qui provoque l’ouverture de Texte5b.htm. Lorsque l’écran est ensuite rafraîchi par la touche [F5] ou l’icône d’actualisation, Texte5.htm se substitue à Texte5b.htm. L’intention de l’internaute se limitait pourtant à rafraîchir la page en cours. Ce problème peut vite s’avèrer énervant pour l’internaute assidu qui, pour retrouver sa page, doit refaire le chemin précédent. Il peut avoir l’impression d’un site mal conçu et zapper.
Ceci s’explique par le fait que l'extension du fichier de définition du cadre de CadreDef5 est php. En fait, cela se produit à chaque fois que les sources de la page de définition des cadres sont modifiées ce qui est systématiquement le cas avec les pages dynamiques. Couplé avec la nécessité de limiter le nombre de fichiers sur disque, le problème peut paraître insolvable si l'on persiste à doter les fichiers d'une extension php. Mais il faudra bien s'y résoudre pour corriger les autres problèmes. Heureusement il y a une solution.
Lorsqu’il atteint enfin la page désirée, l’internaute se rend compte avec une dose d’énervement supplémentaire que le problème qui lui avait causé de rafraîchir sa page, comme une image non chargée, est toujours présent. La raison de ceci est simple. Texte5.htm est rafraîchi par DefCadre5.htm tandis que Texte5b.htm est rechargé depuis la mémoire cache RAM ou disque dans l’état exact où il se trouvait auparavant.
La tentation est forte pour le développeur de résoudre ce problème en introduisant une "balise méta d’instruction no-cache" dans l’entête de chaque fichier. Mais l’internaute en fait les frais lorsqu’il navigue dans l’historique car chaque fichier doit être rechargé en intégralité à chaque passage. C’est long, source potentielle de zapping, les ressources requises de communications et de CPU sont accrues et la facturation par l’hébergeur peut être affectée. Là aussi la solution existe et aucun recours à l’interdiction de la mémoire cache n’est nécessaire pour réafficher la page correctement.
Lorsqu’un internaute place une page dans ses favoris, c’est en fait la page de définition des cadres qui s’y colle. Ainsi, si son intention est de placer Texte5b.htm dans ses favoris tandis qu’il est affiché dans CadreDef5.htm, c’est malgré tout Texte5.htm qui est rappelé par le biais des favoris. Une solution satisfaisante existe.
Lorsque l’utilisateur navigue dans l’historique grâce à l’icône "retour", plusieurs clics sont requis pour atteindre la page précédente. Ceci est la conséquence du fait que plusieurs pages ont été mouvementées en même temps. Il arrive même que cela ne fonctionne pas du tout. La mise au point d’une solution pour ces problèmes est complexe du fait de l’imperfection de la gestion de l’historique des navigateurs. Mais elle existe.
Les problèmes sont récapitulés dans le tableau suivant.
Description du problème
Solution : oui /non
-Difficulté de conception et de mise en œuvre pouvant requérir des centaines d’heures pour :
-Coordonner l’affichage des pages
-Résoudre les problèmes de navigation
-Limiter le nombre de cadres au minimum.Oui
-Comportements de navigations inattendus :
-Touche F5 rappelle le mauvais fichier
-Placement dans les favoris ne fonctionne pas
-Fichier appelé depuis l’extérieur ne s’affiche pas
-Navigation dans l’historique requiert de nombreux clics
-La touche avant de l’historique fonctionne une fois sur trois.Oui
-Affichage des cadres inapproprié selon la résolution d’écran de l’internaute et la taille des polices par défaut du navigateur. Des informations peuvent ne pas être visibles à l’écran si le cadre est trop petit.
Oui
-Obligation de placer des entrées dans le fichier "robots.txt" et les balises Meta pour spécifier les fichiers à ne pas visiter par les moteurs d’indexation. Ils sont plus nombreux avec les cadres que dans les pages classiques.
Partielle
Comme si ces problèmes ne suffisaient pas, des commentateurs qui n’ont probablement jamais fait l’expérience des cadres en inventent de toute pièce.
Fausses idées sur les frames
Réalité sur les frames
-Les moteurs de recherche ne peuvent indexer les sites avec des cadres.
-Pour preuve, Nostradamia est tout en cadres. Il suffit de taper Nostradamia chez Google, Yahoo, Lycos, Aol, Dmoz, Voilà et une douzaine d’autres moteurs pour constater l’indexation extensive et régulièrement renouvelée des pages du site.
-Mais il est vrai qu’il faut prendre le soin d’orienter les moteurs dans la bonne direction.
-Et parce que les frames n’ont pas une bonne réputation, ils peuvent rebuter les bénévoles de chez dmoz.org. Il faut donc les convaincre de la qualité de la navigation et du contenu du site par un développement sans faille et des informations d’intérêt.Les browsers ne lisent pas les frames.
Simple logique : 90% des internautes de France et du monde entier utilisent MSIE versions 4 à 6. 8 à 9% utilisent Netscape version 5 ou 6. 1% utilise Opera. Ceux qui restent utilisent des moindres standards tout aussi performants. Chacun, soit 99,99% de la couverture du web, lit les frames correctement. Le 10000ème internaute qui utilise sans doute une version antérieure à 1998 doit changer de browser, car on ne développe pas pour 1/10000. (Ceci se réfère aux frames et non aux iframes).
Les pages de cadres obligent au recours à Javascript qui ne peut être interprété par certains systèmes.
-Même réponse que précédemment : La quasi-totalité des browsers comprend le Javascript, pourvu qu’il soit activé.
-Le javascript n’est pas l’exclusivité des pages de cadre.
-Mais il est vrai que Google et d’autres moteurs ne suivent pas les liens écrits en Javascript. Il faut donc en tenir compte.C’est au regard des avantages et désavantages qu’il convient de peser le pour et le contre des frames. La liste suivante n’est pas exhaustive.
Avantages des Frames
Afficher plusieurs fichiers sur une même page :
-Conception et évolution du site modularisées
-Informations disjointes visibles simultanément.Aspect :
-Homogénéité de présentation d’un bout à l’autre de la navigation avec un aspect d’application professionnelle.
-On aime ou on aime pas. Mais si on aime, on remarque que l’aspect se démarque de la plupart des autres sites.
-Présentations en livre, l’internaute repère rapidement les sujets qui l’intéressent :
-Menus en guise de chapitre
-Sous-menus en guise de sections et sous sections
-Liens visibles facilement atteints par un simple clic.
-Lors du renouvellement des informations d’un cadre, les autres demeurent visibles. Ceci contribue à maintenir la concentration de l’internaute sur le site. Dans une page classique, la page tout entière disparaît pendant un temps.Possibilité d’afficher des informations importantes toujours visibles dans un cadre dédié :
-Lien vers un forum
-Adresse du webmaster
-Moteur de recherche du site…-Possibilité d’afficher des publicités incorporées non intrusives et toujours visibles qui peuvent être renouvelées selon un timing et une séquence définis par l’administrateur.
-Les fenêtres pop-ups sont systématiquement fermées par les internautes qui se sentent abusés et peuvent même tout simplement en interdire l’affichage. La question ne se pose pas avec les frames, les pubs ayant une place dédiée qui n’interfère pas avec le contenu.
-L’incorporation de la publicité directement dans des pages webs sans frame ne peut être gérée qu’au moment du chargement des fichiers qui est de ce fait ralenti. Avec les frames, cela peut se réaliser durant les temps morts.
-A moins de ne multiplier les encarts, la pub n’est plus visible en bas d’une page classique. Avec des cadres, elle garde une place qui n’agresse pas l’internaute tout en restant visible à tout moment.
-Renouveler les pubs est un jeu d’enfant avec les frames. Mais qu’il s’agisse de cadres ou de pages classiques ceux qui abusent avec des effets qui perturbent la concentration sont zappés.Rapidité de chargement :
-Ne sont mouvementées que les données nécessaires. Par exemple la suite d’un texte est affichée sans que ne bougent les menus. Dans une présentation classique, les menus sont obligatoirement rechargés avec la page de texte ainsi que les pubs et les pseudos-cadres.
-Les options cache et no-cache peuvent être définies individuellement pour chaque cadre.Indexation de qualité :
-L’indexation par les moteurs de recherche se fait sur les informations d’intérêt : le texte. Dans une page classique, l’indexation commence par les informations répétées en haut de chaque page : menus, pubs, messages de l’administrateur …etc. Mais le contenu d’intérêt situé plus bas est ignoré. Dans les pages de cadres, la première donnée est celle du titre.Robustesse :
-Les cadres ne posent pas de problèmes d’affichage pour 99,99% des navigateurs.Sécurité et confidentialité :
-Les sources sont dissimulées. Il ne s’agit pas d’en interdire totalement l’accès mais de le différer. En effet, le plagia est la conséquence d’internautes peu expérimentés qui font du repiquage de sources. Celles des frames ne sont disponibles que pour les webmasters qui savent les trouver. Et ensuite, il faut un minimum de connaissances pour la mise en œuvre. Ceux qui ont les moyens de créer selon leur idée et non celle des autres en bénéficient.
-Il est également possible d’interdire totalement l’accès aux sources grâce en partie aux frames, et ce quelque soit le navigateur (y.c. Opera).
-Les moteurs de recherche d’adresses emails des spammers sont, à ce stade de leur développement, facilement déroutés par les cadres. On peut même leur faire des farces.
-Les aspirateurs de sites et tous ceux qui ne respectent pas le protocole du fichier robots.txt peuvent être facilement interdits de navigation. Lorsqu’ils s’aventurent en zone interdite, les frames peuvent leur indiquer des chemins de liens sans fin qui les égarent et avec lesquels ils ressortent bredouilles après leur timeout ou l’arrêt brutal de l’opérateur.
- Avec les frames et le php il est possible d’interdire la navigation des browsers qui n’affichent pas leurs IP ou qui la renouvellent à chaque page. Ces manières évoquent les voyous qui entrent chez les gens avec une cagoule sur la tête.
-Interdire l’affichage d’une page dans un frame sur un site distant coule de source. Il suffit de tester le nom et le chemin du cadre parent puis de débouter le frame intrus, le surplomber ou lui imposer une autre page.Simplicité :
-Une fois résolus les problèmes de navigation, la publication des textes s’avère ultra-simple, rapide et légère. Les frames peuvent se transformer en véritables machines à publier.