【问题标题】:Back Button with iFrames带有 iFrame 的后退按钮
【发布时间】:2008-12-31 03:40:06
【问题描述】:

我正在使用 iframe 来显示具有链接的内容。当用户在 iFrame 中单击并点击“返回”时,它会返回 iFrame。这种行为是可以的。但是,一旦他们回到 iFrame 的第一页并再次点击“返回”,整个窗口就会返回到前一页。这是不需要的。

为了防止这种行为,我在 iFrame 中放置了一个假的“返回”按钮。 (在大多数情况下,这是糟糕的 UI,在这种情况下,它运行良好)。我希望这个假的后退按钮只有在前一页是 iFrame 的页面时才返回 - 而不是整个页面。 当他们点击 iFrame 中的假后退按钮时,它应该只将那个 iFrame 移回,没有别的。有没有办法做到这一点? iFrame 是否有自己的历史记录对象?

可能有好处的事情:iFrame 的域和主窗口可以假设是不同的。因此,如果可以读取“全局”历史对象,我可以通过检查域是否是我的来检查上一页是否是我的。如果域名不是我的,假的后退按钮将被隐藏或不做任何事情。

帮助不胜感激,节日快乐!

【问题讨论】:

    标签: javascript iframe button history back


    【解决方案1】:
    document.location.href = document.referrer;
    

    【讨论】:

      【解决方案2】:

      您应该能够使用 javascript 历史对象将用户推回;但是当 iframe-clicking 用完并且主页要返回时,您将无法停止它。而且您无法阻止它,因为大多数浏览器都故意将其锁定得很好,以防止人们恶意弄乱它。

      • 您可以编写自己的历史跟踪代码并让后退按钮从该堆栈中弹出项目,当堆栈为空时停止...
      • 如果您正在使用一些复杂的链接嵌套 - 也许是一些基于 javascript 的树形菜单?这样 iframe 永远不会刷新页面?

      没有例子,我不得不说你的设计看起来很糟糕……当我回击时,我不想改变导航;我想回到我刚刚打开的任何页面。

      【讨论】:

      • 谢谢...我希望有更好的方法来做到这一点。我想我会在 cookie/session 中保留一个堆栈。根据糟糕的 UI,它是另一个页面中的浮动 iFrame。当您进入 iFrame 中的新页面时,您通常希望返回(不更改主页面)。
      猜你喜欢
      • 2011-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多