【问题标题】:How to disable iframe functionality如何禁用 iframe 功能
【发布时间】:2020-08-08 00:18:39
【问题描述】:

我的页面上有多个 iframe,但目前只有一个应该处于活动状态。因此,当我在 frame1、frame2、frame3 中导航时一切正常。有切换 iframe 的主菜单。 现在,问题是当我在浏览器中点击返回按钮时,它总是会在最后一次导航的 iframe 中执行返回操作。我需要在“活动”中执行此操作。目前我只隐藏不活动的 iframe,但我需要完全禁用它们。 我需要多个 iframe,因此,当我在菜单选项之间切换时,会保留每个 iframe 中的导航。 有没有办法完全禁用 iframe,使其表现为页面上不存在但不卸载其内容。

【问题讨论】:

    标签: html iframe


    【解决方案1】:

    我不确定是否要在您的情况下禁用 iframe。您可以使用 javascript 来实现某些东西 - 例如,使用以下内容触发特定目标 iframe 上的事件的按钮:

    <a target="the_active_iframe" href="nav();">Link to a location</a>
    <iframe name="the_active_iframe"></iframe>
    

    在javascript函数中

    nav() {
      window.navigate("new location",target="the_active_iframe");
    }
    

    你可以用类似的方式实现向后和向前导航:

    Back and forward buttons in an iframe

    另一个可行的想法是使用一些悬停或鼠标悬停功能来定义哪个框架处于活动状态 并使用窗口导航事件到该特定框架,但我会使用按钮....对我来说似乎不那么混乱。

    编辑:如果你想像你说的那样做......你需要将每个 iframe 的历史分别保存到 javascript 中的一个变量中......并在鼠标悬停时(或类似的东西)用当前iframe历史重写window.history......我从来没有尝试过这样做......但它可能会奏效。

    您可以在此处找到如何保存特定 iframe 的历史记录: Track only iframe history

    那么你需要做的只是覆盖window.history ... on 将 iframe 的鼠标悬停在相应的 iframe 导航历史记录中。

    【讨论】:

    • 是的,但是我需要处理浏览器内置的后退按钮,添加我自己的不会有问题。有没有办法挂上那个按钮什么的。
    • 您需要将每个 iframe 的历史记录分别保存到 javascript 中的变量中并在鼠标悬停或类似的情况下用当前 iframe 历史记录重写 window.history
    • 嗯,在我的例子中 (ff, chrome) window.history 结合了所有 iframe 历史。每个 iframe 都与主页具有相同的历史记录。我错过了什么吗?这可能吗?
    • yes ...这是问题所在,主window.history正在保存所有更改...所有iframe都一样...但是当您在iframe中时(您可以检测到您当前的位置),您只需将发生的导航历史更改保存到一个 javascript 变量中,用于覆盖 window.history,您应该为每个 iframe 创建一个变量,当您在 iframe 上时,您覆盖带有变量的 window.history 仅保存了相应 iframe 的历史更改
    • 嗯,我试过了,没有成功。你能提供一些基本的例子吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多