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

jQuery Discussion :

Loader / Afficher informations durant le chargement de la page


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 61
    Par défaut Loader / Afficher informations durant le chargement de la page
    Bonjour à tous,

    J'ai créé un gestionnaire d'albums photo/vidéo en php. A ce niveau-là, pas de problème.
    Cependant, le traitement des photos et vidéos prend du temps. Il me fallait parfois plusieurs minutes pour afficher un album, ce qui ne pose pas réellement de problème mais afin d'informer l'utilisateur (moi ou une personne proche) de l'avancement, je souhaitais afficher des informations au fur et à mesure des actions à effectuer.

    Le html de ma page est simple: il n'est composé que d'un div qui se place au centre de la page, au dessus d'un autre div vide qui se charge grâce à un script jQuery.

    Mon script jQuery ressemble plus ou moins à cela (je l'ai énormément simplifié pour une meilleur compréhension)
    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
     
    $(window).load(function(){ //ou "$(document).ready" ça ne change rien
     
    	//Récupération de la liste des actions à effectuer
    	actions = loadListActions(...);
    	//J'effectue les différentes actions, j'affiche les photos/vidéos petit à petit
    	//Mais avant chaque action, j'affiche dans le div de chargement ce que je vais faire
    	$.each(actions, function(i, item) {
    		//Affichage des informations
    		$("div#loading").html("Load files ... / Creation ...");
    		//Action, ajax, chargement de html dans le div principal
    		DoSomething();
    	});
     
    	//une fois le chargement terminé, le div de chargement disparait et laisse place au div avec les photos/vidéos chargées
    	$("#loading").fadeOut();	
    });
    Tout fonctionne parfaitement avec Firefox (Firebug est bien pratique dans le cas d'appels Ajax). Je vois l'affiche de message tel que "Traitement photo 1", puis "Traitement photo 2", ... comme ceci:

    Nom : LoaderInfoGallery.png
Affichages : 942
Taille : 3,7 Ko

    Mais le problème, c'est que ça ne fonctionne pas sous Chrome ni IE. En fait, sur ces derniers, la page reste blanche (de quelques secondes à quelques minutes), toutes les actions s'effectuent bien et, une fois que tout est chargé, tout s'affiche d'un coup.
    Si je laisse afficher le div des informations alors apparaît seulement la dernière information.

    Comment faire donc pour avoir le même comportement sous Chrome et Firefox?
    Comment faire pour que le div affichant les informations se rafraîchisse bien durant le chargement sur Chrome? et que ça ne se "freeze" pas durant le chargement.

    Merci d'avance!

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 420
    Par défaut
    Citation Envoyé par ragnarokr Voir le message
    J'ai créé un gestionnaire d'albums photo/vidéo en php. A ce niveau-là, pas de problème.
    Cependant, le traitement des photos et vidéos prend du temps. Il me fallait parfois plusieurs minutes pour afficher un album, ce qui ne pose pas réellement de problème ce qui ne pose pas réellement de problème mais afin d'informer l'utilisateur...
    Tu cherches un moyen pour informer le visiteur d'un problème de délai pour afficher la page. Tu ferais peut-être mieux de chercher à supprimer ce délai d'attente, et donc de revoir le mode de fonctionnement de ton gestionnaire d'album photo/vidéo. Notamment avec ajax tu pourrais charger les photos une par une, à la demande...

  3. #3
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 61
    Par défaut
    Merci ABCIWEB pour ta réponse.

    Tu ferais peut-être mieux de chercher à supprimer ce délai d'attente, et donc de revoir le mode de fonctionnement de ton gestionnaire d'album photo/vidéo. Notamment avec ajax tu pourrais charger les photos une par une, à la demande...
    Disons que le délai d'attente ne me dérange pas car les albums sont pour moi, des amis proches et la famille.
    Ce que je fais actuellement, c'est simplement "uploader" mes photos et vidéos sur mon serveur. A partir de là, les dossiers apparaissent comme des albums différents et lorsque l'on souhaite voir un album, je vérifie si chaque photo a une miniature et je la crée si ce n'est pas le cas. Ainsi, c'est un peu lent à la première visualisation ou lorsqu'il y a des changements (suppression, ajout, ...) mais, ensuite, c'est très rapide (moins de 2s pour effectuer les vérifications).

    Avec l'affichage des informations comme ce que j'ai sur Firefox, ça me convient parfaitement car comme l'utilisateur est informé, il attend. Mais sur Chrome, aucune information, ça donne l'impression que rien ne se charge.

  4. #4
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 420
    Par défaut
    Faudrait peut-être éviter le ".load", normalement le code qui suit cet événement s'exécute après que la page soit entièrement chargée...

    Sinon sur le principe tu ferais mieux de faire tes redimensionnements d'images classiquement lors de l'upload à la place de les faire à la première lecture.

    Si besoin tu peux te servir de cette classe d'upload qui donne des exemples de redimensionnements et/ou recadrage lors de l'upload. Rien ne t'empêche de sauvegarder l'image originale ou de faire plusieurs formats d'agrandissement. Elle supporte l'upload multiple et surpasse les limites serveur donc pas de problème concernant le poids ou le nombre de fichiers que tu peux traiter.

    Cela te permettrais de supprimer ce message d'attente qui somme toute n'a rien à faire ici car quand on visite une page, on a normalement pas à attendre pour terminer un traitement serveur qui aurait dû se faire avant. C'est comme si tu avais une voiture qui a la particularité de devoir passer par le garagiste avant de démarrer. Il n'y a que Volkswagen qui pourrait éventuellement trouver que ta voiture est au point...

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/01/2014, 11h18
  2. Afficher un loader pendant le chargement de la page
    Par paladice dans le forum ASP.NET
    Réponses: 2
    Dernier message: 03/05/2013, 10h36
  3. afficher un texte après chargement de la page
    Par klintistwood dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 12/04/2008, 19h01
  4. Réponses: 1
    Dernier message: 09/02/2006, 10h11

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