![Citation](https://forum.developpez.be/images/misc/quote_icon.png)
Envoyé par
kizery
Pardon si j'ai mal compris mais, la première partie du code qui dois mémoriser la page active, est t elle chargé à chaque fois que je clique sur un numéro de page ?
Pas dans l’état, mais relis bien ce que j’ai écrit :
![Citation](https://forum.developpez.be/images/misc/quote_icon.png)
Envoyé par
Watilin
l’ajout d’un écouteur de pageshow pour agir à l’affichage / réaffichage de la page ;
[…]
Ainsi, il faut déplacer la création de ta pagination, de la fonction $(document).ready() vers l’écouteur pageshow.
Petit rappel, les bouts de script s’exécutent à différents moments par rapport à la façon dont ils sont écrits, et les évènements auxquels ils se rattachent.
Les instructions qui se trouvent en dehors de toute fonction (en gros, pour simplifier) sont exécutées au moment où le script est interprété. Dans 90 % des cas (code inclus dans la balise, ou bien attribut src présent mais pas d’attribut async ou defer), ça correspond au moment où la balise <script> est rencontrée par l’analyseur HTML. Si cette balise se trouve dans le <head> ou quelque part au milieu du <body>, le DOM n’est pas complètement prêt à ce moment. C’est pourquoi on utilise la fonction .ready().
Le code présent dans .ready() est appelé quand le navigateur émet l’évènement DOMContentLoaded, qui garantit que le DOM est prêt. Ça veut dire que les éléments HTML sur lesquels on veut agir existent tous.
Un autre évènement, load, est émis quand toutes les ressources (images, iframes, médias, etc.) de la page ont fini de charger. Ça peut arriver très tard (si les ressources sont lourdes ou s’il y a de la latence) ou à peu près au même moment que DOMContentLoaded. Dans tous les cas, load est émis après.
Finalement, pageshow est émis, et comme je l’ai dit précédemment, il semblerait qu’il soit toujours émis après load. Important, si la page est chargée depuis le cache, on ne peut pas être sûrs que DOMContentLoaded et load seront émis. pageshow est notre seule garantie dans ce cas.
Dans ton code, tu as mis l’instruction let memorizedPage = ... en dehors de toute fonction, elle est donc exécutée trop tôt. Tu dois la remettre dans l’écouteur de pageshow comme je l’avais écrit.
![Citation](https://forum.developpez.be/images/misc/quote_icon.png)
Envoyé par
kizery
Comment modifier memorizedPage à chaque clique sur un page ?
La variable memorizedPage ne sert que pour la création de la pagination, tu n’as pas besoin de la mettre à jour à chaque clic. Le sessionStorage est mis à jour sur pagehide, c’est-à-dire au moment où la page est quittée.
Tu as un problème dans ton code :
$('.sync-pagination').twbsPagination('page'));
Le message d’erreur n’est pas très explicite :
TypeError: data[option] is undefined
Ça veut dire en fait que la méthode 'page' n’existe pas.
Je n’ai pas trouvé de documentation sur les différentes méthodes de ce plugin, mais en regardant dans le code source, on peut obtenir leurs noms :
destroy, show, enable, disable, buildListItems, buildItem, getPages, render, setupEvents, makeHref, makeText, getPageFromQueryString, generateQueryString, getSearchString, getCurrentPage.
J’avais trouvé getCurrentPage dans un exemple de code sur la page esimakin.github.io/twbs-pagination/ que tu as donnée dans ton premier post.
![Citation](https://forum.developpez.be/images/misc/quote_icon.png)
Envoyé par
kizery
En fait, pour résumer la situation, j'ai une pagination similaire à cette page, qui utilise surement du Ajax aussi
Oui, c’est bien de l’ajax.
![Citation](https://forum.developpez.be/images/misc/quote_icon.png)
Envoyé par
kizery
Hors moi, je reviens toujours à la page du navigateur précédente (je suis sur google, je vais sur mon site, j'arrive sur la page 1, je clique sur page 2, je fais précédent dans mon navigateur, je reviens sur google et moi je voudrais la page 1). Je m'arrache les cheveux
![:aie:](https://www.developpez.net/forums/images/smilies/aie.gif)
C’est une technologie complètement différente de pageshow et pagehide, il s’agit de manipuler l’historique en y ajoutant des entrées qui ne correspondent pas à des pages au sens classique (un fichier envoyé par un serveur).
Je t’invite à lire le guide Manipuler l’historique de l’utilisateur
Partager