2012-02-01 114 views
7

我有一个专门用于手机的网页,其中包含一个链接在父目标中打开的iframe。在移动Safari中按下后退按钮后,Javascript停止在iframe中执行

在iOS 5.0.1的Safari中,当用户点击一个链接,然后使用返回按钮返回页面时,JavaScript停止在iframe内执行。

一个简单的演示来说明这个问题:

点击链接,确认该警报并使用返回按钮。第二次点击链接警报不会显示。

的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> 

我跑出来的东西可能会造成这个想法。有没有人跑过来呢?

回答

2

退房答案Problems with Page Cache in iOS 5 Safari when navigating back/unload event not fired

为我工作的答案是做到以下几点:

<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

仅供参考 - 这不,如果你将此到iframe中的页面工作,它必须是托管的iframe的整个页面, 。或者,这可能是因为我的iframe确实嵌入了另一个iframe。是的,我正在使用第三方组件。 – kamranicus 2013-09-05 15:38:34

+1

是的,这绝对需要在包含iframe的页面上。 – DrewB 2013-10-24 22:28:17