在移动safari中按下后退按钮后,Javascript将停止在iframe中执行
Javascript stops executing in iframe after back button is pressed in mobile safari
我有一个专为手机设计的网页,其中包含一个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>
我想不出是什么原因导致了这种情况。有人碰过这个吗?
我遇到了同样的问题。iPad的Safari似乎会对页面进行快照,当你使用后退按钮返回页面时,它会加载快照,而javascript代码不会被执行。
这似乎与这个问题有关:http://www.mac-forums.com/forums/internet-networking-wireless/257631-safari-ipad-back-button-generates-old-info.html
很烦人。我还没有找到解决办法。
这是一个Webkit错误:从[后退/前进]缓存恢复文档后,位置和其他对象功能失调
添加一个空的unload
处理程序似乎可以避免iOS4中的问题,但不能避免iOS5中的问题。
查看iOS 5 Safari中导航返回/卸载事件未触发时页面缓存问题的答案。
对我有效的答案是做以下事情:
<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>
相关文章:
- iFrame url更改时执行函数
- 检测JavaScript是否在沙盒Iframe中执行
- iframe未执行Javascript方法(PHP)
- 如何检测何时执行 iframe 脚本
- iFrame在超时时停止执行
- 如何等到iframe刷新完成后再执行函数
- 如何在 iFrame 的 onload 事件中执行代码
- 每次 iframe 重新导航时执行操作.(JavaScript)
- 在执行函数之前等待多个 iFrame 加载
- Twitter iframe和其他JavaScript获取前者内容的执行顺序
- 加载 iframe 后在 iframe 中执行 JavaScript 代码
- 使用 iframe 的内容在页面上执行 jquery .click()
- 如何在特定的服务器时间在 php 页面上使用 javascript 执行 iframe
- 停止所有代码执行,直到 IFrame 完全加载
- 无法从子 iframe 获取 javascript 执行按钮单击
- 在 iframe 中复制粘贴时执行 Javascript
- 动态放置在 iframe 中的脚本不会执行
- 如何在 javascript 中的 iframe 中创建和执行代码
- 将javascript添加到iframe并执行它
- iframe 中加载 PHP 并重定向的 Javascript 不会执行