7

我已经经历了其他类似的问题来解决这个特定的问题,但是在这种情况下,所有的解决方案都不起作用。

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

我有一个看起来像这样的 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单击链接时使用 servlet 填充内容。

我在. iframe_target="_parent"iframe

我已经使用<base>tag 来指定行为并且 link has target="_blank",但是我的链接根本不起作用。相同的链接在 iframe 之外工作。

示例 iframe:

base target="_parent" /base 

正文内容:

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

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

任何帮助深表感谢。

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

谢谢,马杜

4

4 回答 4

12

我无法真正解释“为什么”,因为我不太了解 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。建议应从单独的专用域提供此类内容,以限制潜在的损害。

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

于 2013-06-05T00:39:45.953 回答
2

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

  <iframe sandbox="allow-same-origin allow-scripts allow-popups allow-forms"
src="your_url"></iframe>
于 2018-11-01T11:24:19.497 回答
0

我有同样的问题,修复它使用

window.open(url, '_blank')

于 2019-10-28T17:25:07.317 回答
0

这是因为您的浏览器中的扩展程序阻止了它。如果您有安全扩展程序,例如 Duckduckgo 或其他阻止第三方链接进入您网站的东西,它会阻止它。进入设置中的扩展部分,然后禁用它以查看是否可以解决您的问题。

于 2021-12-18T08:34:06.713 回答