从iframe点击“返回”更改父窗口

时间:2012-03-22 03:28:04

标签: javascript jquery iframe parent

我有一个编写加载页面的iFrame的脚本。我创建了一个JSFiddle以使事情变得清晰:

link JSFiddle loading CNN in a frame

这会在帧中加载CNN。如果你在框架中向下滚动到新闻并点击新文章然后“返回”在Safari和谷歌浏览器中都有一些奇怪的行为:单击“返回”不会将iframe“返回”,它需要整个父框架'后退'。我怎样才能防止这种情况发生?

同样奇怪的是,事实并非总是如此。亲自尝试一下,点击至少5-10个链接,你会发现小提琴会不时地重置自己。这不应该发生......

这种行为似乎只发生在Safari en Chrome,Opera和IE似乎没有这个问题......

1 个答案:

答案 0 :(得分:0)

当您单击不同的URL时,浏览器会注册历史事件,因为iframe是您所在页面的一部分,它会将iframe内的点击注册为父页面的历史事件。不同的浏览器可能会有不同的行为 - 我希望FF和Chrome是单向的,IE的行为略有不同。无论如何测试你的例子,Chrome和IE的工作方式完全相同,而且与预期的完全一样。

所以澄清一下: 就浏览器而言,加载JSFiddle是一个历史事件。 单击按钮以创建和加载Iframe不是历史事件。 单击Iframe窗口中的URL链接是历史事件。

此时,您有两种状态,浏览器会记住这些状态,您可以在历史记录中来回浏览。