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

AJAX Discussion :

Gestion de l'historique sur première page chargée en PHP


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de memento80
    Homme Profil pro
    Boulot : ne rentre pas dans une case
    Inscrit en
    Novembre 2004
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Boulot : ne rentre pas dans une case
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2004
    Messages : 163
    Par défaut Gestion de l'historique sur première page chargée en PHP
    Bonjour,

    J'ai surement un petit problème de conception à propos de la gestion de l'historique de navigation en Ajax + PHP. C'est peut-être tout bête mais je commence à tourner en rond après avoir épluché le web.

    Je m'essaye depuis peu à la navigation de page en page avec Ajax et une gestion de l'historique avec pushState après chargement de chaque page.
    Lorsque je fais des retours arrière dans la navigation, mes pages historisées réapparaissent bien grâce à la gestion du window.onpopstate. Jusque là, pas de problème...
    Par contre, le problème apparaît quand j'arrive sur la première page chargée dans l'historique, celle-ci ne provoque pas un rafraîchissement de la page. A première vue, cela semble logique car la première page en question a été chargée de "façon classique", en php et lors du retour arrière sur cette page, le event.state constaté est à null.

    Pour schématiser la navigation réalisée :
    - Page 1 [Chargement PHP]
    - Page 2 [Chargement AJAX + pushState]
    - Page 3 [Chargement AJAX + pushState]
    - Retour arrière sur page 2 [Chargement grâce gestion window.onpopstate et son event.state]
    - Retour arrière sur page 1 [Pas de rechargement de la page 1 car event.state à null]

    Ma question est donc, que devrais-je faire pour provoquer ce chargement de la page 1 par retour arrière au niveau de l'historique ?

    Merci par avance pour vos pistes.
    Memento

    Quelques extraits.. si utile :

    Commande pushState après chargement AJAX
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    window.history.pushState(
                    {typaff:'GETINFAJAX', page:prd, compprd:compPrd, idcible:idCible, fgshow:fgshow, comp:tabParamAff,
                        blocaff:tabBlocAff, blocMas:tabBlocMas, zoneAct:tabLigAct, zoneDes:tabLigDes},
                    document.title,
                    "/index.php?page="+prd.toUpperCase()+varCompUrl); // Modification de l'URL (+historique)
    Extrait partie window.onpopstate (fctGetInfoAjax met à jour les informations en Ajax)
    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
    window.onpopstate = function(event) { // Navigation dans l'historique
            console.log(event);
            if(event.state != null) { // Si état particulier mentionné
                //alert('pas null : '+event.state.toSource());
                if(event.state.typaff == 'GETINFAJAX') { // Si récupération d'information par Ajax (pour alimenter un bloc)
                    var prd = event.state.page;
                    var compPrd = event.state.compprd;
                    var idCible = event.state.idcible;
                    var fgshow = event.state.fgshow;
                    var tabParamAff = event.state.comp;
                    var tabBlocAff = event.state.blocaff;
                    var tabBlocMas = event.state.blocMas;
                    var tabLigAct = event.state.zoneAct;
                    var tabLigDes = event.state.zoneDes;
     
                    fctGetInfoAjax({'Prd':prd, 'CompPrd':compPrd, 'IdCible':idCible, 'FgShow':fgshow, 'TabParamAff':tabParamAff,
                        'BlocAff':tabBlocAff, 'BlocMas':tabBlocMas, 'LigAct':tabLigAct, 'LigDes':tabLigDes}, 0, null); // Affichage du contenu en Ajax
                }
            }
        }

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 212
    Par défaut
    Bonjour,
    Retour arrière sur page 1 [Pas de rechargement de la page 1 car event.state à null]
    traite donc ce cas à part, fait un rechargement forcé ou recharge la partie Ajax.

  3. #3
    Membre confirmé Avatar de memento80
    Homme Profil pro
    Boulot : ne rentre pas dans une case
    Inscrit en
    Novembre 2004
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Boulot : ne rentre pas dans une case
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2004
    Messages : 163
    Par défaut
    Merci pour ta réponse.

    Traiter ce cas à part est donc la meilleure solution ?
    Comment le traiter à part ? Utiliser replaceState lors du premier chargement de cette page 1 pour détecter ce cas lors du futur retour arrière (et donc du window.onpopstate) ? Une autre manière ?

Discussions similaires

  1. Image sur première page de chapitre
    Par alias_sg1 dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 1
    Dernier message: 20/05/2012, 14h41
  2. Fade in / out sur une page chargée dans un Div ..
    Par Kelplant dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 24/07/2010, 20h21
  3. Gestion automatique de données sur plusieurs pages
    Par xiabolo86 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 12
    Dernier message: 08/01/2010, 14h18
  4. Gestion des Tab Index sur une page
    Par Fngonka dans le forum ASP.NET
    Réponses: 2
    Dernier message: 17/07/2008, 13h55
  5. [CSS]Impression : élément sur première page uniquement
    Par iubito dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 15/08/2006, 15h05

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