多个带有单个后退按钮的iframe

Multiple iframes with individual back buttons

本文关键字:按钮 iframe 单个      更新时间:2023-10-20

我有一个站点,它有两个iframe,每个iframe都包含来自服务器的不同内容。我希望每个iframe都有一个只对自己起作用的后退按钮,即backbutton_1只对frame_1起作用,backbutton_2只对frame_2起作用,等等。

这些都是我试图实施的方法,但都无济于事。

  • a) 使用onclick="history.back()"将后退按钮放入iframe

  • b) 使用onclick="iframe.contentWindow.history.back()" 将后退按钮放入iframe

  • c) 后退按钮进入带有onclick="frame_1.history.back()" & onclick="frame_2.history.back()" 的父站点

不幸的是,这些方法中的每一种都只在全球范围内有效,而不是单独有效。

如有任何帮助,我们将不胜感激。

我认为,对于同一域上的iframe,您只能在有限的范围内进行单个iframe历史导航,但实际上这不是一个非常有用的机制,因为实际上只能有一个历史序列,因此单个历史导航与全局历史导航冲突。一旦你偏离了一个历史序列,它之后的一切都被抹去了,所以如果使用单独的导航,全球导航将是不可能的(否则它将破坏时空连续体的结构,摧毁整个宇宙)。

想象一下,如果你有一个父页面a和两个iframe B和C,并且你像这样向前导航:

步骤1:A查看第1页,B查看第2页,C查看第3页

步骤2:A查看第1页,B查看第2页,C导航到4

步骤3:A浏览第1页,B导航到第5页,C浏览第4页

步骤4:A查看第1页,B查看第5页,C导航到6

使用全局历史的场景:如果我们使用浏览器的"返回"按钮两次返回到步骤2,则您希望B显示第2页,C显示第4页,如果您继续到步骤3,则B显示5,C显示4。现在,用户将C导航到第1页。用户现在已经删除了这一点之后的任何历史记录,因为我们已经分叉了历史记录,所以没有全局转发(它变灰了)。我们可以导航回步骤3、2和1,也可以从步骤3向前导航到新的步骤4(B显示5,C显示1)。

使用个别历史的场景:如果我们使用个别按钮导航,并在iframe C上按下两次后退按钮,您可能会在个别级别上期望C移动到第4页(步骤2中的位置),iframe B将留在第5页。现在用户将B导航到第7页。现在,全局和单个历史按钮会发生冲突,因为您可能会认为按下C可以返回到第3页(步骤1中的内容),但全局后退会将两个iframe移动到哪里?

如果你想要真正独立的iframe历史记录,我认为你需要在代码中跟踪用户的导航,但要注意,由于上面解释的冲突,全局导航使用起来会很奇怪。