J'ai une page qui contient une iframe. L'iframe peut prendre en compte les données de l'utilisateur (via un clic sur un bouton ou la sélection d'un menu) et afficher le contenu en conséquence. Ce dont j'ai besoin, c'est que lorsqu'un utilisateur manipule l'iframe, le navigateur enregistre chaque ensemble de paramètres de l'iframe dans l'historique ; et lorsque l'utilisateur clique sur le bouton retour, l'iframe recharge son contenu en utilisant les paramètres enregistrés à partir de l'entrée précédente de l'historique. J'ai un morceau de code qui effectue le rechargement comme indiqué ci-dessous.
Ce qui est étrange, c'est que lorsque j'effectue plusieurs réglages sur l'iframe (d'où plusieurs entrées d'état ajoutées à l'historique), et que je clique ensuite sur retour, cela fonctionne comme suit,
Disons que j'ai les états 4, 3, 2 en histoire et que je suis maintenant à l'état 5.
- le premier clic rétablit l'état 4 (le message de journalisation "----state changed----" s'imprime
- le second clic recharge l'iframe avec le contenu par défaut. Le message "----state changed----" n'est pas imprimé ; le code de rechargement n'est pas appelé.
- le troisième clic rétablit l'état 3
- le quatrième clic est comme le deuxième clic
- le 5ème clic rétablit l'état 2
Ainsi, après chaque clic qui rétablit l'état, il faut deux clics pour déclencher l'événement popstate (j'ai également essayé l'événement statechanged, avec le même résultat) et rétablir un autre état antérieur.
Quelqu'un sait-il ce qui se passe ici ? Merci d'avance.
History.Adapter.bind(window, "popstate",
function (event) {
console.log("----state changed------", History.getState());
console.log("----state data------",History.getState().data.state);
//code to do reload an iframe to its proper state
});