2012-02-01 7 views
7

Mam stronę internetową przeznaczoną dla telefonów komórkowych, które zawiera iframe z linkami, które otwierają się w celu nadrzędnego.JavaScript przestaje wykonywany w iframe po naciśnięciu przycisku wstecz w Mobile Safari

w Safari na iOS 5.0.1, gdy użytkownik kliknie link, a następnie korzysta z przycisku Wstecz, aby wrócić do strony, JavaScript przestaje wykonującego w iframe.

Prosty demo do zilustrowania problemu:

kliknij link, potwierdź alert i użyj przycisku Wstecz. Za drugim razem, gdy klikniesz link, alert nie będzie wyświetlany.

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> 

biegnę z pomysłów co może być przyczyną tego. Czy ktoś do tego dołączył?

Odpowiedz

2

Sprawdź odpowiedzi na Problems with Page Cache in iOS 5 Safari when navigating back/unload event not fired.

Odpowiedź który pracował dla mnie było, aby wykonać następujące czynności:

<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

FYI - to nie zadziała, jeśli stosuje się to do strony wewnątrz iframe, to musi być na całej stronie hostingowej iframe . Lub może być tak, ponieważ mój element iframe jest naprawdę osadzony w innym elemencie iframe. Tak, używam komponentu innej firmy. – kamranicus

+1

Tak, to na pewno musi być na stronie, która zawiera iframe. – DrewB

Powiązane problemy