2012-02-01 10 views
7

Ho una pagina Web destinata ai telefoni cellulari che include un iframe con collegamenti che si aprono nella destinazione principale.JavaScript interrompe l'esecuzione in iframe dopo aver premuto il pulsante Indietro in mobile safari

In Safari su iOS 5.0.1, quando un utente fa clic su un collegamento, quindi utilizza il pulsante Indietro per tornare alla pagina, javascript interrompe l'esecuzione all'interno dell'iframe.

Un semplice demo per illustrare il problema:

, clicca sul link, confermano l'allarme e utilizzare il pulsante Indietro. La seconda volta che fai clic sul link l'avviso non verrà visualizzato.

index.html:

<html> 
    <body> 
    <iframe src="iframe.html"></iframe> 
    </body> 
</html> 

iframe.html:

<html> 
    <body> 
    <a target="_parent" onclick="alert('Click')" href="http://www.google.com"> 
     Link 
    </a> 
    </body> 
</html> 

che sto a corto di idee su che cosa potrebbe causare questo. Qualcuno si è mai imbattuto in questo?

risposta

2

check-out la risposta a Problems with Page Cache in iOS 5 Safari when navigating back/unload event not fired.

La risposta che ha funzionato per me è stato quello di effettuare le seguenti operazioni:

<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> 
+0

CRONACA - questo non funziona se si applica questo alla pagina all'interno del iframe, deve essere sulla pagina complessiva che ospita l'iframe . Oppure potrebbe essere perché il mio iframe è davvero incorporato in un altro iframe. Sì, sto utilizzando un componente di terze parti. – kamranicus

+1

Sì, questo sicuramente deve essere nella pagina che include l'iframe. – DrewB

Problemi correlati