Récupération de données entre pages HTML

Résolu
Raviolito -  
 Raviolito -
Bonsoir, sur chaque pages de mon site j'ai un bandeau pour customiser la couleur du fond. Le problème est que lors d'un changement de page la customisation ne s'enregistre pas.
J'ai vu que l'utilisation de cookie était envisageable, mais je n'ai aucune idée de comment faire avec mon code.

Voici ma partie javascript pour changer la couleur du fond et la typo.


<script>

function changeColor(color) {
document.body.style.background = color;

}
function changeColor2(color) {

document.body.style.color = color;
}

</script>


Et voici ma partie HTML où l'utilisateur choisi sa couleur via des boutons.


<button onclick = "changeColor('black'); changeColor2('gainsboro');"></button>
<button onclick = "changeColor('MidnightBlue'); changeColor2('gainsboro');"></button>
<button onclick = "changeColor('black'); changeColor2('firebrick');"></button>
<button onclick = "changeColor('gainsboro'); changeColor2('black')"></button>


Merci de votre réponse.

4 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    Bonjour
    Plutôt que d'utiliser les cookies
    Je t'invite à utiliser le localstorage.
    Tu trouveras, sans aucune difficulté, des tutoriels qui t'explique rond comment l'utiliser. ( Je précise que c'est très simple )

    0
    1. Raviolito
       
      Merci pour votre suggestion, malheureusement je ne parviens pas à l'utiliser.
      Pourriez vous m'aider d'avantage?


      Voila ce que j'ai essayé de faire, sans réel succès...


      function theme(){
      var theme = localStorage.getItem('color')
      }

      function changeColor(color) {
      document.body.style.background = color;
      localStorage.setItem('color');
      }

      function changeColor2(color) {
      document.body.style.color = color;
      }
      0
      1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831 > Raviolito
         
        A quel moment utilises tu la variable theme ?
        0
  2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    En plus, ton code n'est pas terrible.
    pourquoi dupliquer du code, alors qu'il suffit de passer un paramètre.

    Donc :
    côté html
    <button onclick = "changeColor('black','gainsboro');"></button>
    <button onclick = "changeColor('MidnightBlue','gainsboro');"></button>
    <button onclick = "changeColor('black,'firebrick');"></button>
    <button onclick = "changeColor('gainsboro','black')"></button>
    


    function changeColor(bgcolor,fontcolor) {
      document.body.style.background = bgcolor;
      document.body.style.color = fontcolor;
      localStorage.setItem('bgcolor',bgcolor); // storage.setItem(nomClé, valeurClé);
      localStorage.setItem('fontcolor',fontcolor); // storage.setItem(nomClé, valeurClé);
    
    }
    


    et pour recharger les couleurs déjà sauvegardées
    //code qui s'executera lorsque la page sera finie de charger
    (function(){
       document.body.style.background = localStorage.getItem('bgcolor');
        document.body.style.color = localStorage.getItem('fontcolor');
    })();
    

    0
  3. Raviolito
     
    Effectivement il n'était pas optimisé...

    Le localstorage fonctionne, par contre quand je rentre la dernière fonction pour récupérer les données, les boutons ne fonctionnent plus.
    0
  4. Raviolito
     
    Voici mon code.

    
    <!DOCTYPE html>
    <html>
    
    <head>
        <title>COULEUR</title>
        <meta charset="utf-8" />
    <link rel="icon" href="ico.gif" type="image/gif">
    
    <style>
    
    .font{
      font-family:sans-serif;
      font-variant: small-caps;
    }
                  .BandeMenuHaut {
                   border-bottom: 1px solid ;
                   display: block;
                   height: 50px;
                   width: 100%;
                   position: fixed;
                   margin-top: 0px;
                   top: 0px;
                   left: 0px;
                   right: 0px;
                  }
    
                 .custom {
                   border-right: 1px  solid ;
                   border-left: 1px  solid ;
                   display: block;
                   height: 50px;
                   width: 33.3333%;
                   position: fixed;
                   margin-top: 0px;
                   top: 0px;
                   left: 33.3%;
                   right: 0px;
                 }
    
                 .text_custom{
                   display: flex;
                   justify-content: space-around;
                   font-size: 15px;
                   z-index: 2;
                   margin-left:33.3333%;
                   margin-right:33.3333%;
                   font-family: monospace;
                 }
    
                 .zone_custom{
                   display: flex;
                   justify-content: space-around;
                   z-index: 1;
                 }
    
                 .case_custom{
                   display: flex;
                   justify-content: space-around;
                 }
    
                 .trait_custom_1{
                   border-right: 1px  solid ;
                   border-left: 1px  solid ;
                   display: block;
                   width: 8.3333%;
                   height: 50px;
                   position: fixed;
                   margin-top: 0px;
                   top: 0px;
                   left: 33.3%;
                   right: 0px;
                   z-index: 0;
                 }
    
                 .trait_custom_2{
                   border-right: 1px  solid ;
                   display: block;
                   width: 8.3333%;
                   height: 50px;
                   position: fixed;
                   margin-top: 0px;
                   top: 0px;
                   left: 41.7%;
                   right: 0px;
                 }
    
                 .trait_custom_3{
                   border-right: 1px  solid ;
                   display: block;
                   width: 8.3333%;
                   height: 50px;
                   position: fixed;
                   margin-top: 0px;
                   top: 0px;
                   left: 50%;
                   right: 0px;
                 }
    
    button{
      background: none;
      opacity: 50%;
      color: none;
      border: none;
      outline-style: none;
      width: 157px;
      height: 50px;
      cursor:pointer;
    }
    
    </style>
    
    <script>
    
    function changeColor(bgcolor,fontcolor) {
      document.body.style.background = bgcolor;
      document.body.style.color = fontcolor;
      localStorage.setItem('bgcolor',bgcolor); // storage.setItem(nomClé, valeurClé);
      localStorage.setItem('fontcolor',fontcolor); // storage.setItem(nomClé, valeurClé);
    }
    
    </script>
    
    </head>
    
    <body>
    
    <div class="font">
    <div class="BandeMenuHaut">
    <div class="text_custom">
      <p>noir</p>
      <p>bleu</p>
      <p>rouge</p>
      <p>gris</p>
    </div>
        <div class="custom">
          <div class="case_custom">
            <div class="trait_custom_1"></div>
            <div class="trait_custom_2"></div>
            <div class="trait_custom_3"></div>
          </div>
          <div class="zone_custom">
            <button onclick = "changeColor('black','gainsboro');"></button>
            <button onclick = "changeColor('MidnightBlue','gainsboro');"></button>
            <button onclick = "changeColor('black','firebrick')"></button>
            <button onclick = "changeColor('gainsboro','black')"></button>
          </div>
        </div>
    </div>
    
    </body>
    
    </html>
    
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      Et bien ... qu'est-ce qu'il a ce code ?
      Il fonctionne très bien...

      par contre, le Javascript .. on le place à la fin du code avant le </body>

      Le mettre dans le head ... c'est à l'ancienne ... quand on codait il y a 15 ans...

      Donc, si on remet le code dans le bon sens
      
      <!DOCTYPE html>
      <html>  
        <head>
          <title>COULEUR</title>
          <meta charset="utf-8" />
          <link rel="icon" href="ico.gif" type="image/gif">
      
          <style>
      
          .font{
            font-family:sans-serif;
            font-variant: small-caps;
          }
                        .BandeMenuHaut {
                         border-bottom: 1px solid ;
                         display: block;
                         height: 50px;
                         width: 100%;
                         position: fixed;
                         margin-top: 0px;
                         top: 0px;
                         left: 0px;
                         right: 0px;
                        }
      
                       .custom {
                         border-right: 1px  solid ;
                         border-left: 1px  solid ;
                         display: block;
                         height: 50px;
                         width: 33.3333%;
                         position: fixed;
                         margin-top: 0px;
                         top: 0px;
                         left: 33.3%;
                         right: 0px;
                       }
      
                       .text_custom{
                         display: flex;
                         justify-content: space-around;
                         font-size: 15px;
                         z-index: 2;
                         margin-left:33.3333%;
                         margin-right:33.3333%;
                         font-family: monospace;
                       }
      
                       .zone_custom{
                         display: flex;
                         justify-content: space-around;
                         z-index: 1;
                       }
      
                       .case_custom{
                         display: flex;
                         justify-content: space-around;
                       }
      
                       .trait_custom_1{
                         border-right: 1px  solid ;
                         border-left: 1px  solid ;
                         display: block;
                         width: 8.3333%;
                         height: 50px;
                         position: fixed;
                         margin-top: 0px;
                         top: 0px;
                         left: 33.3%;
                         right: 0px;
                         z-index: 0;
                       }
      
                       .trait_custom_2{
                         border-right: 1px  solid ;
                         display: block;
                         width: 8.3333%;
                         height: 50px;
                         position: fixed;
                         margin-top: 0px;
                         top: 0px;
                         left: 41.7%;
                         right: 0px;
                       }
      
                       .trait_custom_3{
                         border-right: 1px  solid ;
                         display: block;
                         width: 8.3333%;
                         height: 50px;
                         position: fixed;
                         margin-top: 0px;
                         top: 0px;
                         left: 50%;
                         right: 0px;
                       }
      
          button{
            background: none;
            opacity: 50%;
            color: none;
            border: none;
            outline-style: none;
            width: 157px;
            height: 50px;
            cursor:pointer;
          }
      
          </style>
        </head>
      
        <body>
      
          <div class="font">
          <div class="BandeMenuHaut">
          <div class="text_custom">
            <p>noir</p>
            <p>bleu</p>
            <p>rouge</p>
            <p>gris</p>
          </div>
              <div class="custom">
                <div class="case_custom">
                  <div class="trait_custom_1"></div>
                  <div class="trait_custom_2"></div>
                  <div class="trait_custom_3"></div>
                </div>
                <div class="zone_custom">
                  <button onclick = "changeColor('black','gainsboro');"></button>
                  <button onclick = "changeColor('MidnightBlue','gainsboro');"></button>
                  <button onclick = "changeColor('black','firebrick')"></button>
                  <button onclick = "changeColor('gainsboro','black')"></button>
                </div>
              </div>
          </div>
          <script>
      
          function changeColor(bgcolor,fontcolor) {
            document.body.style.background = bgcolor;
            document.body.style.color = fontcolor;
            localStorage.setItem('bgcolor',bgcolor); // storage.setItem(nomClé, valeurClé);
            localStorage.setItem('fontcolor',fontcolor); // storage.setItem(nomClé, valeurClé);
          }
          //code qui s'executera lorsque la page sera finie de charger
          (function(){
             document.body.style.background = localStorage.getItem('bgcolor');
              document.body.style.color = localStorage.getItem('fontcolor');
          })();
          </script>
          </body>
      </html>
      
      0
      1. Raviolito > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Super ça marche!
        Effectivement mettre le javascript dans le head était le problème.

        Merci!
        0