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

Contribuez Discussion :

[SRC] Changer de feuilles de style en Javascript [JavaScript]


Sujet :

Contribuez

  1. #1
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 602
    Points : 7 837
    Points
    7 837
    Par défaut [SRC] Changer de feuilles de style en Javascript
    Bonjour

    J'ai longtemps cherché, pas trouvé quelque chose de clair et encore moins sur dvp.com !

    Je suis arrivé à faire un code satisfaisant et simple, alors je le propose ici :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    <?php echo ('<?xml version="1.0" encoding="utf-8"?>'); ?>
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
     <head>
      <link rel="shortcut icon" href="images/notes.ico" />
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      <meta name="Author" content="Troumad" />
      <meta name="Description" content="Linux" />
      <meta name="Keywords" content="Nous" />
      <meta name="Identifier-URL" content="http://troumad.org" />
      <meta name="Reply-to" content="troumad@libertysurf.fr" />
      <meta name="revisit-after" content="31" />
      <meta name="Publisher" content="Troumad" />
      <meta name="Copyright" content="gpl" />
      <meta name="Generator" content="kwrite" />
      <title>Notations</title>
      <link rel="stylesheet" type="text/css" media="screen" title="Defaut" href="/include/style.css" />
      <link rel="stylesheet" type="text/css" media="screen" title="Test" href="/include/style1.css" />
      <script type="text/JavaScript">
    //<![CDATA[
     function changeStyle(nv_style)
     {
      for(i=0; (a = document.getElementsByTagName("link")[i]); i++)
       if (a.getAttribute("rel")=="stylesheet" && a.getAttribute("media")=="screen")
        if (a.getAttribute("title")==nv_style)
         a.disabled = false;
        else
         a.disabled = true;
     }
     
     function donneStyle()
     {
      for(i=0; (a = document.getElementsByTagName("link")[i]); i++)
       if (a.getAttribute("rel")=="stylesheet")
        if (!a.disabled)
         alert(a.getAttribute("title") + " pour le media " + a.getAttribute("media"));
     }
    //]]>
    </script>
     </head>
     <body>
     <p>Style : <a href="#" onclick="changeStyle('Defaut')">Defaut</a> ou <a href="#" onclick="changeStyle('Test');">Test</a></p>
    </body>
    </html>
    Quelques explications

    1) Je fais du php, donc j'ai du trouver une astuce pour la première ligne (rien à voir avec notre sujet)
    2) Dans mon entête, j'ai plusieurs balise link dont deux de css pour l'écran.
    3) Mes fonctions changeStyle et donneStyle parcourent les balises link et repèrent celles dont l'attribut rel est stylesheet : mes feuilles de style
    4) Pour la fonction changeStyle qui va activer le style nv_style, je ne fais le changement que sur le media screen (écran)
    Après je rend actif la bonne page de style et désactive les autres (enfin c'est inversé dans la nommination : je déactive ou active la déactivation....)
    5) Pour la fonction donneStyle j'affiche les style activé (déactiva = faux, c'est inversé !) tout en signalant sur quel média il est actif.

    Je suis là pour plus d'information Je pense que ce serait bien en FAQ ou Petit article si ça ne l'est pas encore.

    À partir de là s'ouvre pleins d'horizons : menu automatique pour choisir les styles...

    nb : testé uniquement sur FireFox et Konqueror. S'il existe d'autres navigateurs, je ne les connais pas (ou je ne veux pas en entendre parler).

  2. #2
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 887
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 887
    Points : 16 320
    Points
    16 320
    Par défaut
    Et pourtant, sur la même page tu as aussi :

    http://www.developpez.net/forums/sho...d.php?t=380160

    L'article est en cours de réflexion.

  3. #3
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 602
    Points : 7 837
    Points
    7 837
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     <div class="style">
      <select>
      <script type="text/JavaScript">
      //<![CDATA[
      for(i=0; (a = document.getElementsByTagName("link")[i]); i++)
       if (a.getAttribute("rel")=="stylesheet" && a.getAttribute("media")=="screen")
        document.write("<option onclick='changeStyle(\""+ a.getAttribute("title") +"\")'>"+a.getAttribute("title")+"</option>")
      //]]>
      </script>
      </select>
     </div>
    Et hop... Le menu automatique pour proposer tous les styles

  4. #4
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 602
    Points : 7 837
    Points
    7 837
    Par défaut
    Citation Envoyé par Bisûnûrs Voir le message
    Et pourtant, sur la même page tu as aussi :

    http://www.developpez.net/forums/sho...d.php?t=380160

    L'article est en cours de réflexion.
    Je n'avais pas vu !
    Mais l'approche ne semble pas la même. Je me suis contenté de plus simple il me semble.
    Il est où l'article en cours de réflexion ?

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    Et ceux qui sont un peu malins en lisant la doc HTML, et qui écrivent rel="alternate stylesheet" (ou même rel="StyleSheet") au lieu de rel="stylesheet", ils l'ont dans le baba

    mieux vaut faire donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (a.getAttribute("rel").match(/(^|\s)stylesheet(\s|$)/i) && a.getAttribute("media").match(/(^|\s)(screen|visual)(\s|$)/i))

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

Discussions similaires

  1. Modification feuille de style avec javascript
    Par Invité dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/05/2007, 18h39
  2. Modifier des feuilles de styles en Javascript
    Par navis84 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 08/08/2006, 10h19
  3. Changer de feuille de style en fonction du choix de l'utilisateur
    Par Jim_Nastiq dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 07/08/2006, 10h52
  4. acces feuille de style avec javascript
    Par lacsap49 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 15/02/2006, 14h45
  5. Changer la feuille de style a l aide d un clic sur un bouton
    Par jean_bobi dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 09/11/2005, 08h35

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