使用iframe后 浏览器后退不能使用!如何解决!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用iframe后 浏览器后退不能使用!如何解决!相关的知识,希望对你有一定的参考价值。

比如:A页面嵌入了一个iframe,在a页面有一个后退按钮代码 window.history.go(-1) 没反应,浏览器的后退按钮也变灰掉了,不能用。
谢谢!

参考技术A 你将链接在原页面中打开试试。
<a href="" title="" target="_seft">链接</a>追问

这样不行的哦!

追答

你把你做的网页打包发给我,我帮你看下行吗?没有什么隐私吧。你私信我,把你的联系方式给我,我加你。

在移动 Safari 中按下后退按钮后,Javascript 停止在 iframe 中执行

【中文标题】在移动 Safari 中按下后退按钮后,Javascript 停止在 iframe 中执行【英文标题】:Javascript stops executing in iframe after back button is pressed in mobile safari 【发布时间】:2012-02-01 10:39:32 【问题描述】:

我有一个适用于手机的网页,其中包含一个 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>

我想不出可能是什么原因造成的。有人遇到过这个吗?

【问题讨论】:

【参考方案1】:

我遇到了同样的问题。似乎 iPad 的 Safari 对页面进行了快照,当您使用后退按钮返回该页面时,它会加载该快照并且 javascript 代码没有被执行。

好像和这个问题有关: http://www.mac-forums.com/forums/internet-networking-wireless/257631-safari-ipad-back-button-generates-old-info.html

非常烦人。我还没有找到解决办法。

【讨论】:

【参考方案2】:

这是一个 Webkit 错误:Location and other objects are dysfunctional after a document gets restored from [back/forward] cache

Adding an empty unload handler seems to avoid the problem in iOS 4 but not iOS 5.

【讨论】:

【参考方案3】:

查看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>

【讨论】:

仅供参考-如果您将其应用于 iframe 内的页面,则此方法不起作用,它必须位于托管 iframe 的整个页面上。或者,可能是因为我的 iframe 确实嵌入在另一个 iframe 中。是的,我正在使用第三方组件。 是的,这肯定需要在包含 iframe 的页面上。

以上是关于使用iframe后 浏览器后退不能使用!如何解决!的主要内容,如果未能解决你的问题,请参考以下文章

解决 iframe 后退不是主页面后退(浏览器 history)问题

用iframe后 点后退按钮时总是在潜套框里后退,如何让整个父页面整体后退呢?

嵌入 iframe 的页面 history 流程(浏览器后退)

ace admin中类似iframe的效果如何实现的

某些页面上的后退按钮导航不能立即生效,但经过多次点击后

在rails 5中单击浏览器的后退按钮后如何避免返回?