iframe 内的链接(不在弹出窗口中)不起作用

新手上路,请多包涵

我已经解决了其他类似问题来解决这个特定问题,但在这种情况下,所有解决方案都无法正常工作。

所以这是我的示例片段问题:

我有一个看起来像这样的 html 文件:

 <div id="portalRight">
    <a target="_blank" href="http://ictforu.com">   <!-- this link works , it opens up another tab -->
    <ul id="subtabnav">
        <li class="datasetTab">
            <a href="#">dataset</a> <!-- Click on this will trigger the dataset iframe to be loaded thru a servlet call  -->
        </li>
        <li class="obsGraphTab" data-bind="css: { disabled: !aekos.subTabViewModel.graphTabsEnabled() }">
            <a href="#">Observation Graph</a>
        </li>
        .....
    </ul>

    <div id="dataset">
        <iframe id="dataset-frame" class="graphiframe" seamless sandbox="allow-same-origin allow-scripts"></iframe>
    </div>
    <div id="testViewer">
                <iframe id="test-viewer-frame" class="graphiframe" seamless sandbox="allow-same-origin allow-scripts"></iframe>
    </div>

</div>

如您所见,我的 iframe 不是弹出窗口,而是出现在 div 元素下: iframe 单击链接时填充内容

我的 iframe 在 --- 的标题下有基本标签(基本 target="_parent" iframe

我使用了 <base> 标签来指定行为并且链接也有 target="_blank" ,但我的链接根本不起作用。相同的链接在 iframe 之外有效。

示例 iframe :

 base target="_parent" /base

正文内容:

 a target="_blank" href="http://ictforu.com" /a

此链接无效,点击将被忽略。

任何帮助深表感谢。

抱歉,之前的 html 标签存在一些编辑问题。

谢谢,马杜

原文由 Madhu V Rao 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 909
2 个回答

我无法真正解释“为什么”,因为我不太了解 iframe 的沙盒属性,但是当我删除该属性时,在新选项卡中打开的链接对我来说很好。

编辑:

仔细研究一下,似乎您可以添加属性“allow-top-navigation”,然后将链接更改为“target=_parent”,这样就可以了,但是如果您保留 target=_blank,它仍然不起作用

这是来自 mozilla 站点的一些文档

仅限沙盒 HTML5

如果指定为空字符串,则此属性会对可能出现在内联框架中的内容启用额外限制。属性的值可以是解除特定限制的以空格分隔的标记列表。有效的令牌是:

  • allow-same-origin :允许将内容视为来自其正常来源。如果不使用此关键字,嵌入的内容将被视为来自唯一来源。
  • allow-top-navigation :允许嵌入式浏览上下文将内容导航(加载)到顶级浏览上下文。如果不使用此关键字,则不允许执行此操作。
  • allow-forms :允许嵌入式浏览上下文提交表单。如果不使用此关键字,则不允许执行此操作。
  • allow-scripts :允许嵌入式浏览上下文运行脚本(但不创建弹出窗口)。如果不使用此关键字,则不允许执行此操作。

笔记:

  • 当嵌入文档与主页同源时,强烈建议不要同时使用 allow-scriptsallow-same-origin ,因为这允许嵌入文档以编程方式删除 sandbox 属性。虽然它被接受,但这种情况并不比不使用 sandbox 属性更安全。
  • 如果攻击者可以安排在沙盒之外的用户浏览器中显示潜在的恶意内容,则沙盒通常只有最小的帮助 iframe 。建议此类内容应从 单独的专用域 提供,以限制潜在的损害。

那里没有更多,但这 是链接

原文由 Jeff Wright 发布,翻译遵循 CC BY-SA 3.0 许可协议

沙盒让您可以控制设置所需的权限,而不是打开所有内容。这里需要设置权限,“allow-scripts allow-popups”。它会工作正常。确保根据情况删除配置。

   <iframe sandbox="allow-same-origin allow-scripts allow-popups allow-forms"
src="your_url"></iframe>

原文由 Saminda Kularathne 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题