J'ai une page Web destinée aux téléphones mobiles qui inclut un iframe avec des liens qui s'ouvrent dans la cible parent.
dans Safari sur iOS 5.0.1, lorsqu'un utilisateur clique sur un lien, puis utilise le bouton arrière pour aller Retour à la page, JavaScript arrête d'exécuter dans l'iframe. p>
une simple démo à illustrer le problème: p>
Cliquez sur le lien, confirmez l'alerte et utilisez le bouton arrière. La deuxième fois que vous cliquez sur le lien, l'alerte ne figurera pas. P>
index.html: p> iframe.html: p> <html>
<body>
<a target="_parent" onclick="alert('Click')" href="http://www.google.com">
Link
</a>
</body>
</html>
3 Réponses :
J'ai couru dans le même problème. Il semble que les instantanés de safari d'iPad la page et lorsque vous y retourne à l'aide du bouton arrière, il charge que l'instantané et le code JavaScript ne sont pas exécutés. P>
Cela semble être lié à ce problème: HTTP : //www.mac-forums.com/forums/internet-networking-Wireless/257631-safaridiaisad-back-button-generates-old-info.html P>
très ennuyeux. Je n'ai pas encore trouvé de solution. P>
Consultez la réponse à problèmes de cache de page dans iOS 5 Safari lors de la navigation sur l'événement de retour / déchargement non tiré .
La réponse qui a fonctionné pour moi était de faire ce qui suit: p>
<body onunload=""> ... <script type="text/javascript"> if ((/iphone|ipod|ipad.*os 5/gi).test(navigator.appVersion)) { window.onpageshow = function(evt) { // If persisted then it is in the page cache, force a reload of the page. if (evt.persisted) { document.body.style.display = "none"; location.reload(); } }; } </script>
FYI - Cela ne fonctionne pas si vous appliquez ceci à la page à l'intérieur de l'iframe, elle doit figurer sur la page générale hébergeant l'iframe. Ou, cela pourrait être parce que mon iframe est vraiment intégré dans un autre iframe. Oui, j'utilise un composant tiers.
Oui, cela doit définitivement être sur la page qui inclut l'IFrame.