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 :

Image loading après un clic


Sujet :

JavaScript

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 391
    Points : 84
    Points
    84
    Par défaut Image loading après un clic
    Bonjour,
    J'ai besoin de votre aide.
    Je souhaite que lorsque je clic sur un lien de mon site, il y a une petite image chargement qui s'affiche en attendant le chargement de la page suivante.
    Merci d'avance de votre aide

  2. #2
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 452
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 452
    Points : 4 601
    Points
    4 601
    Par défaut
    tu ne peux pas vraiment faire ca nativement. quand tu change de page, c'est le navigateur qui se charge de tout.

    par contre, ce que tu peux faire (si c'est a ca que tu pensais) c'est que tout le contenu de toutes tes pages se chargent en ajax. (mais si tu es debutant) ca risque d'etre complique
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2014
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 219
    Points : 336
    Points
    336
    Par défaut
    Bonjour,

    En effet d'une page à l'autre c'est le navigateur qui s'en occupe.
    Mais tu peux toujours mettre une image chargement au OnLoad de ta page
    exemple simple

    Cordialement
    Si débugger est l'art de corriger les bugs, alors programmer est l'art d'en créer.

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 391
    Points : 84
    Points
    84
    Par défaut
    Donc ce n'est pas possible d'afficher une image immédiatement après un clic ?

  5. #5
    Membre confirmé Avatar de ma5t3r
    Homme Profil pro
    Développeur freelance
    Inscrit en
    Mai 2015
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2015
    Messages : 320
    Points : 492
    Points
    492
    Par défaut
    Un exemple simple

    L'image dans ta page HTML
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        <a class="myImgWrapper" href="maPagePHP.php"><img src="monImage.jpg" alt=""></a>
    Le script dans ton fichier JS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     $('.myImgWrapper').on('click', function(e) {
            let html = "<div style='position:absolute;top:0;bottom:0;width:100%;height:100%;background-color:#fff'><div style='text-align:center'>ceci est un test</div></div>";
            $('body').append(html);
        })
    Un bon CSS derrière tout ça et ça le fait (ça devrait le faire) :-)

  6. #6
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2014
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 219
    Points : 336
    Points
    336
    Par défaut
    Citation Envoyé par Devilju69 Voir le message
    Donc ce n'est pas possible d'afficher une image immédiatement après un clic ?
    C'est plus très clair pour ma part, le clic = une nouvelle page web ?
    Quand souhaites-tu afficher ton image exactement ?
    Si débugger est l'art de corriger les bugs, alors programmer est l'art d'en créer.

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 391
    Points : 84
    Points
    84
    Par défaut
    Lorsque l'on clique sur un lien, oui cela ouvre une nouvelle page mais de temps en temps le site met du temps à basculer sur la nouvelle page ; et pendant ce temps d'attente, juste une image loading pour pas que la personne clic une deuxième fois.

  8. #8
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2014
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 219
    Points : 336
    Points
    336
    Par défaut
    Bonjour,

    Tu peux exécuter l'événement que tu souhaites avec l'exemple de ma5t3r, ou simplement le onclick
    Sinon je te renvoie vers le premier exemple qui met une image de chargement avant de charger l'image ()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var image = document.images[0];
    var downloadingImage = new Image();
    downloadingImage.onload = function(){
        image.src = this.src;   
    };
    downloadingImage.src = "image.jpg";
    Si débugger est l'art de corriger les bugs, alors programmer est l'art d'en créer.

  9. #9
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2014
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Arménie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2014
    Messages : 388
    Points : 578
    Points
    578
    Par défaut
    Bonjour,

    Si vous voulez ouvrir une nouvelle page, vous pouvez placer le contenu de cette page dans une variable, puis, lorsque l'ensemble est chargé, remplacer l'image de départ par le contenu de cette variable.

    Code html : 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
    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
      </head>
      <body>
        <noscript>Pour utiliser cette application, activez le JavaScript.</noscript>
        <div id="page"></div>
        <script>
          document.getElementById("page").innerHTML='<img src="chargement_en_cours.gif">';
          var ch="La page.<br>";
          ch+="La suite de la page...<br>";
          ch+="La fin de la page.";
          onload=function() { document.getElementById("page").innerHTML=ch; };
        </script>
      </body>
    </html>

  10. #10
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2014
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Arménie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2014
    Messages : 388
    Points : 578
    Points
    578
    Par défaut
    Rebonjour,

    Si on reste dans l'idée d'ouvrir une nouvelle page, on peut aussi cacher le contenu de celle-ci pendant le chargement, puis, celui-ci étant terminé, remplacer l'image de départ par la page.
    Code html : 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
    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
      </head>
      <body>
        <noscript>Pour utiliser cette application, activez le JavaScript.</noscript>
        <div id="chargement"></div>
        <script>
          document.getElementById("chargement").innerHTML='<img src="chargement_en_cours.gif">';
          onload=function() {
            document.getElementById("chargement").style.display="none";
            document.getElementById("page").style.display="block";
          };
        </script>
        <div id="page" style="display:none;">
          La page.<br>
          La suite de la page...<br>
          La fin de la page.
        </div>
      </body>
    </html>

  11. #11
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    la meilleur solution reste d'optimiser tes fichiers/pages, il existe pas mal d'outils, afin qu'elles se chargent au plus rapide. Les solutions proposées, même si elles peuvent fonctionner, ne sont pas pour moi de bonnes approches et font fuir le visiteur la plupart du temps.

    Une autre approche est le « One-Page » et là tu peux te permettre d'afficher un « loading » pendant la requête Ajax. (approche Doksuri, mais pas si complexe que cela.)

  12. #12
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2014
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Arménie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2014
    Messages : 388
    Points : 578
    Points
    578
    Par défaut
    Bonjour,

    L'approche "One-Page", proposée par NoSmoking (et Doksuri), a le grand avantage d'éviter d'ouvrir une nouvelle page. Selon Wikipédia :

    Une application web monopage (en anglais single-page application ou SPA) est une application web accessible via une page web unique. Le but est d'éviter le chargement d'une nouvelle page à chaque action demandée, et de fluidifier ainsi l'expérience utilisateur. Deux méthodes existent pour ce faire :
    - l'ensemble des éléments de l'application est chargé (contenu, images, CSS et JavaScript) dans un unique fichier HTML,
    - soit les ressources nécessaires sont récupérées et affichées dynamiquement en fonction des actions de l'utilisateur.

    Première méthode
    L'affichage de la nouvelle page est presque immédiat. La petite image de chargement est donc inutile. Exemple illustrant la méthode :
    Code html : 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
    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <script>
          changer=function() {
            document.getElementById("page1").style.display="none";
            document.getElementById("page2").style.display="block";
          };
        </script>
      </head>
      <body>
        <div id="page1">
          Première page.<br><br>
          <a onclick="changer();">Suivant</a>
        </div>
        <div id="page2" style="display:none;">
          Deuxième page.
        </div>
      </body>
    </html>
    Deuxième méthode
    Avec un iframe plutôt qu'avec XMLHttpRequest... désolé, je n'ai pas pu résister. Cela fonctionne en local. Exemple illustrant cette méthode :
    Code html : 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
    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <script>
          changer=function() {
            document.getElementById("page1").style.display="none";
            document.getElementById("chargement").style.display="block";
            document.getElementById('page2').src="page2.html";
            document.getElementById('page2').onload=function() {
              document.getElementById("chargement").style.display="none";
              document.getElementById("page2").style.display="block";
            };
          };
        </script>
      </head>
      <body>
        <div id="page1">
          Première page.<br><br>
          <a onclick="changer();">Suivant</a>
        </div>
        <div id="chargement" style="display:none;">
          <img src="chargement_en_cours.gif">
        </div>
        <iframe id="page2" style="display:none;"></iframe>
      </body>
    </html>

  13. #13
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2014
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Arménie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2014
    Messages : 388
    Points : 578
    Points
    578
    Par défaut
    Bonjour,

    Cette question n'est pas encore résolue? Deuxième méthode donc, mais avec XMLHttpRequest() cette fois.

    Code HTML : 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
    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <script>
          changer=function() {
            document.getElementById("page1").style.display="none";
            document.getElementById("page2").innerHTML='<img src="chargement_en_cours.gif">';
            xhr=new XMLHttpRequest();
            xhr.open("GET", "page2", false);  // Requête définie en mode synchrone
            xhr.send(null);                   // Envoie de la requête...
            document.getElementById("page2").innerHTML=xhr.responseText;
          };
        </script>
      </head>
      <body>
        <div id="page1">
          Première page.<br><br>
          <a onclick="changer();">Suivant</a>
        </div>
        <div id="page2"></div>
      </body>
    </html>

    Fichier page2 (par exemple) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    La page 2.<br>
    La suite de la page 2...<br>
    La fin de la page 2.

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/04/2017, 23h40
  2. afficher du texte cacher derière une image après un clic
    Par paradiseofddl dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 24/05/2009, 23h57
  3. Accéder au texte descriptif d'une image après un clic dessus
    Par rambc dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 23/04/2009, 08h59
  4. preloader des images pour les faires afficher apres un clic
    Par polochtwo dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/03/2009, 13h37
  5. Comment ne pas rejouer une animation après un clic ?
    Par mmmmhhh dans le forum ActionScript 1 & ActionScript 2
    Réponses: 4
    Dernier message: 04/09/2002, 16h11

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