IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

JS CSS : impossible de styler un href ?


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mai 2008
    Messages : 121
    Points : 65
    Points
    65
    Par défaut JS CSS : impossible de styler un href ?
    Salut,
    Voilà un truc de ouf : pourquoi est-il impossible, via JavaScript, de récupérer la valeur de l'attribut color d'une balise href ?

    Comment faites-vous ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <!DOCTYPE html>
    <head>
    <title>TEST</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <script>
    	function monalerte(coucou) {
    		var toto = document.getElementById(coucou).style.color ;
    		alert(toto);
    		}
    </script>
    <style>
    	a:link, a:active, a:visited {color:black;}
    	a:hover {color:rgb(000,000,255);}
    </style>
    </head>
    <body>
    	<a href="#" id="monid" onMouseOver="monalerte(this.id);">mon lien</a>
    </body>
    Merci.

  2. #2
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Il y a deux raisons.

    La première, c'est qu'en JavaScript, la propriété style reflète l'attribut HTML style d'un élément donné. J'emploie les mots propriété et attribut dans un sens précis : la propriété est ce que tu manipules en JavaScript ; l'attribut est ce qui se trouve dans le code HTML. La propriété className reflète l'attribut class.

    Par exemple, si tu as ce code HTML :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <a style="color: green">lien</a>
    En consultant sa propriété style dans la console F12, on obtient ceci :
    Code JS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >> document.querySelector("a").style
    CSS2Properties { color: "green" }

    L'attribut style n'est qu'une partie de l'ensemble des styles appliqués à l'élément. C'est au moteur CSS de déterminer cet ensemble. JavaScript n'a, de base, pas connaissance de toutes les informations de style de chaque élément, car ça demanderait trop de temps de calcul. Il existe des situations où le moteur JS fait appel au moteur CSS : quand tu accèdes à une propriété du genre clientWidth, offsetLeft, etc. ou quand tu le demandes explicitement à l'aide de la fonction getComputedStyle :
    Code JS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >> getComputedStyle(document.querySelector("a"))
    CSS2Properties { align-content: "stretch", align-items: "stretch", align-self: "stretch", animation-delay: "0s",
    animation-direction: "normal", animation-duration: "0s", animation-fill-mode: "none", animation-iteration-count: "1",
    animation-name: "none", animation-play-state: "running", 227 de plus… }

    (Comme tu peux le voir, ça fait beaucoup de règles de style.)
    En faisant ceci, tu peux accéder à la règle color effectivement appliquée à ton lien. Mais ça ne correspondra pas forcément à sa véritable couleur, et cela à cause de la… Seconde raison.

    La seconde raison concerne uniquement la pseudoclasse :visited. Les navigateurs donnent toujours la couleur d'un lien comme s'il n'était pas visité, car sa véritable couleur ferait fuiter une information sur la vie privée de l'utilisateur.
    Imagine que tu visites une page sur laquelle il y a des liens vers des sites sensibles (contenu adulte, opposition politique, etc.), et que le script de cette page est en mesure de dire lesquels tu as visités. Pire, il peut envoyer cette information via Ajax vers une base de données. C'était une faille de sécurité qui a été corrigée en 2011. Voir : Privacy and the :visited Selector
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    A savoir également que les balises a sont des balises particulières qui héritent de styles particuliers pour des raison ergonomiques, mise en exergue du lien, du survol du lien , lien visité ...

    ces style se gèrent en css avec les pseudo classes :hover, :link, :visited pour overrider les style d'ergonomie du navigateur
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mai 2008
    Messages : 121
    Points : 65
    Points
    65
    Par défaut
    Merci Watilin pour ces explications très précises.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Interpretation CSS impossible par Firefox, et IE7
    Par amateur_will dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 05/01/2008, 08h43
  2. Centrer plusieurs images en CSS, impossible ?
    Par koskoz dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 03/08/2006, 22h55
  3. Lecture valeurs CSS impossible :s
    Par balti dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 02/09/2005, 21h32
  4. coller une img à un div en css: impossible?
    Par Martyin dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 13/12/2004, 11h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo