J'ai une application HTML5 qui manipule l'historique du navigateur pour afficher l'URL appropriée pour les appels Ajax. Cela fonctionne très bien, mais un problème se produit lorsque mon application a un lien hypertexte vers un site externe, disons http://www.google.com. Lorsque cela se produit, l'histoire ressemble à ceci:Historique HTML5, bouton Précédent et liens externes
My App Page A -> My App Page B -> Google
Lorsque l'utilisateur clique sur le bouton en arrière une fois, tout va bien. Ma page d'application B est affichée.
Mais lorsque l'utilisateur appuie une seconde fois sur le bouton Précédent, l'URL change, mais la page ne change pas. Mon application ne peut pas effectuer l'appel Ajax approprié pour afficher l'état de la page Ma application, car le gestionnaire onpopstate n'a jamais été appelé. Cela est dû au fait que le gestionnaire n'a pas été initialisé lorsque le navigateur est revenu sur la page Mon application (aucun événement ne se déclenche sur cet événement, donc je ne peux pas réinitialiser le gestionnaire.)
Cette expérience concerne Chrome, mais je n'a aucune raison de croire que c'est spécifique à Chrome. Y a-t-il un moyen de contourner ce problème?
Je sais que des applications comme Gmail ouvrent tous les liens hypertexte externes dans une nouvelle fenêtre. Mais les exigences de mon application ne me permettent pas de le faire.
Vous devez utiliser un gestionnaire onload en plus du gestionnaire popstate, et vous [pourriez avoir besoin d'un gestionnaire de déchargement] (http://stackoverflow.com/questions/158319/cross-browser-onload-event-and-the- back-button) pour casser le cache du navigateur. – user123444555621
Je ne comprends pas pourquoi 'onpopstate' n'a jamais été appelé. Il doit être appelé chaque fois que l'utilisateur change d'emplacement. –