'pageshow' n'est pas reçu en appuyant sur le bouton "retour" de Safari sur "IPad"
J'ai le gestionnaire suivant:
$(window).bind('pageshow', function() { alert("back to page"); });
Quand je naviguez à partir de la page (en cliquant sur un lien) et revenir à la page (en appuyant sur la "retour" bouton), le alert() n'est pas appelé (IPad 2, iOS 5.1).
Ce que je fais mal s'il vous plaît? Tout autre événement que je besoin de se lier à?
PS: intéressant de noter que pagehide est reçu correctement lorsque vous naviguez à partir de la page.
source d'informationauteur BreakPhreak
Vous devez vous connecter pour publier un commentaire.
Vous pouvez vérifier l'
persisted
propriété de lapageshow
événement. Il est défini sur false dans chargement initial de la page. Lorsque la page est chargée de mettre en cache est définie sur true.Pour quelque raison que jQuery n'a pas cette propriété dans l'événement. Vous pouvez le trouver à partir de l'original d'événement.
Ce qui est probablement un problème de mise en cache. Lorsque vous retournez à la page via le bouton "retour", la page est tirée à partir de la mémoire cache (comportement dépend du navigateur). De ce fait, votre JS ne sera pas le feu depuis la page est déjà rendu dans le cache, et de ré-exécuter votre js pourrait être préjudiciable à la présentation et à de telles.
Vous devriez être en mesure de surmonter ce en peaufinant votre mise en cache des en-têtes dans votre réponse ou à l'aide d'une poignée de navigateur astuces.
Voici quelques liens sur le sujet:
MODIFIER
Ce sont tous tirés à partir de liens ci-dessus:
history.navigationMode = 'compatible';
<body onunload=""><!-- This does the trick -->
pageshow
etpagehide
."$(document).ready(handler)
window.onunload = function(){};
Ce que vous faites là est la liaison la valeur de retour de
alert("back to page")
comme un rappel. Cela ne marchera pas. Vous devez lier une fonction à la place: