1178 sujets

Accessibilité du Web

Bonjour,

Je voudrai savoir s'il existait un moyen simple de détecter si un user agent a désactivé les images dans sa configuration.

J'ai créé un site qui utilise la méthode de l'indent pour certains background de liens (similaire au comportement des trois boutons du menu de la bannière d'alsacreations.fr par exemple). Le texte des liens ne s'affiche que si le css est complétement désactivé, j'ai créé un css "alternate" pour permettre à l'internaute de désactiver l'indent, mais je voulais savoir si cela ne pouvait être fait automatiquement par détection justement de la configuration d'affichage des images sur un navigateur.

Merci pour vos idées

ps : j'ai changé le titre de la discussion de Détecter si le navigateur a désactivé les images au titre actuellement visible
Modifié par vahadar (15 May 2010 - 19:18)
Bonjour,

Ce n'est, à ma connaissance, pas possible. Mais même si cela l'était, comment ferait tu dans le cas où les images sont autorisée mais ne peuvent être affichée (genre comme chez moi depuis une semaine parce que mon FIA fait des travaux et que c'est un joyeux bazar) ?
Bonne question.

A part l'activation manuelle du css alternate qui supprime les indent je ne vois pas comment. Encore faut-il que l'internaute ait connaissance de ce css, s'il ne regarde pas les options de style de la page Smiley cligne

Bref une impasse on dirait
Salut,
vahadar a écrit :
J'ai créé un site qui utilise la méthode de l'indent pour certains background de liens (similaire au comportement des trois boutons du menu de la bannière d'alsacreations.fr par exemple). Le texte des liens ne s'affiche que si le css est complétement désactivé, j'ai créé un css "alternate" pour permettre à l'internaute de désactiver l'indent, mais je voulais savoir si cela ne pouvait être fait automatiquement par détection justement de la configuration d'affichage des images sur un navigateur.

Le problème que tu exposes est surtout un problème de conception. Je suppose que tu utilises une image texte gérée en CSS et couplée à un texte en dur qui reprend le texte de l'image et que tu masques en CSS avec text-indent. Dans ce cas, la meilleure solution (celle qui contente tout le monde, y compris ceux qui n'ont pas l'image, mais les CSS Smiley cligne ) consiste à insérer l'image en dur dans le code HTML : élément img muni de l'attribut alt, dont la valeur reprend le texte contenu dans l'image ; du coup, plus besoin de feuilles de style alternatives. Smiley cligne
désolé encore pour ce multi post mais j'ai la solution Smiley smile

Le but est d'avoir un bouton informatif avec une image et un effet de rollhover mais faire en sorte que l'utilisateur puisse accéder au contenu textuelle lié à l'image si besoin. Et sans utiliser la fonction de javascript rollover.

J'avais vu plusieurs solutions sur ce forum mais elles ne me convenaient pas. ( sur cette article sur alsacréations Remplacement d'images : halte au display none ! de Raphael sur le sujet, de la discussion de 2005 liée à cette article sur l'association d'un contexte à un bouton avec effet de rollhover en utilisant seulement des image en background, et du text-indent ou du display:none pour masquer le contexte lié à l'image dans le lien. Même chose ailleurs sur le web les solutions étaient toutes similaires)

Le contenu de l'information se trouve sur l'image du bouton, dans l'attribut "alt" mais également sur le background du <a> (j'évite de mettre une information différente sur le hover du <a> mais juste un effet visuel).

En faisant un mix des css cités plus haut (à partir d'une image de 100*100px (urlimage.jpg dans l'exemple) et d'une image alternative de 100*200px pour sa version hover(urlimagehover.jpg dans l'exemple)) j'applique une taille de 0px à l'image via le css et ne s'affiche donc que le background de l'<a> placé en absolu ainsi que son hover.

L'image urlimagehover.jpg contient dans sa partie supérieure la même image que celle d'urlimage.jpg et dans sa partie inférieur la version hover de cette image. (technique mentionnée plus en détail ailleurs sur ce site). Le hover du <a> va afficher grâce à la propriété background-position l'image en version hover.


<div id="image"><a id="hoverimage" href="urllien" title="urllien"><img src="urlimage.jpg" alt"blablabla"></a></div>



#hoverimage img {
width: 0px;
height: 0px;
}

#image { 
position: relative; 
width: 100px;
height: 100px;
} 

#hoverimage {
width: 100px; 
height:100px; 
}

a#hoverimage {
position: absolute; 
top:0; 
left:0; 
background: url(urlimagehover.jpg); 
} 
 
a#hoverimage:hover { 
background-position: 0 -100px; 
} 


Du coup si les images sont désactivées dans le navigateur on voit tout de même son alternative textuelle puisqu'elle occupe la zone définie par le bloc du <a>. On pourrait même appliquer un background de couleur en plus de l'image avec une couleur de texte contrastée (dans le background: url(urlimagehover) #couleur1; du a#hoverimage et de sa version hover pour un effet plus stylé pour différencier la zone occupée par le bouton)

De même si le css est désactivé, l'effet hover et la taille fixée à 0px disparaissent et l'image réapparait sous sa forme d'origine, donc tout le monde est content.


Plus de flicker avec ce css contrairement aux précédents que j'avais mis plus haut, ca a l'air de marcher sur les dernières versions d'ie, ff, opera. Jaws lit également le contenu de l'image. Mais pensez-vous que le #hoverimage img {width: 0px; height: 0px;} pourrait poser un problème de compatibilité sur d'autres navigateurs (ou version antérieures) et lecteurs?

Safari et Chrome n'affichent pas l'alt.

Avec ce code, Opéra et IE font déborder le texte du alt en dehors de la boîte en absolute qui contient le tag <img> sur une même ligne, alors que Firefox s'adapte à la largeur de la boîte parente.

Seuls Firefox et Opera peuvent attribuer une typo à l'alt en fonction de ce qui est défini dans le bloc parent.

Quelqu'un pourrait-il confirmer si un tel code lit bien l'alt de l'image sur les lecteurs Hal, Homepage reader, Outspoken et windows eyes? (que je ne possède pas)

ps : si un modérateur pouvait effacer mes précédents messages, apparemment j'avais un problème de cookie avec le site et le bouton éditer n'apparaissait pas (je n'avais que "citer"), encore désolé pour ce multiposting, j'ai condensémes messages dans celui-ci.

C'est fait Smiley cligne
Modifié par vahadar (15 May 2010 - 20:57)
vahadar a écrit :
Et sans utiliser la fonction de javascript rollover.

Justement, si tu veux appliquer un effet de rollover sur une image véhiculant de l'information sans pénaliser certains utilisateurs (ceux qui désactivent les images tout en laissant les CSS se charger, par exemple), la meilleure solution passe par le JavaScript, vu que tu dois utiliser l'élément HTML img pour insérer les images.
C'est vrai. Enfin tout ça n'est qu'une question de choix d'accessibilité.
Ma proposition a clairement ses limites en fonction du navigateur, l'utilisation du javascript aussi pour ceux qui le désactivent (même si dans ce cas l'image reste visible sans effet hover, même problème avec l'alt et les navigateurs si image aussi désactivée).
En fin de compte la technique de l'indent sur un bloc de texte avec un effet d'hover sur background est pas mal, même si elle n'affiche pas vraiment l'alternative textuelle à l'écran, mais l'information ne disparaît pas (si images désactivées par exemple, avec les limites de safari et chrome si image désactivée) et reste visible pour les lecteurs d'écrans.
Modifié par vahadar (16 May 2010 - 15:39)