我已经解决了其他类似问题来解决这个特定问题,但在这种情况下,所有解决方案都无法正常工作。
所以这是我的示例片段问题:
我有一个看起来像这样的 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 许可协议
我无法真正解释“为什么”,因为我不太了解 iframe 的沙盒属性,但是当我删除该属性时,在新选项卡中打开的链接对我来说很好。
编辑:
仔细研究一下,似乎您可以添加属性“allow-top-navigation”,然后将链接更改为“target=_parent”,这样就可以了,但是如果您保留 target=_blank,它仍然不起作用
这是来自 mozilla 站点的一些文档
仅限沙盒 HTML5
如果指定为空字符串,则此属性会对可能出现在内联框架中的内容启用额外限制。属性的值可以是解除特定限制的以空格分隔的标记列表。有效的令牌是:
allow-same-origin
:允许将内容视为来自其正常来源。如果不使用此关键字,嵌入的内容将被视为来自唯一来源。allow-top-navigation
:允许嵌入式浏览上下文将内容导航(加载)到顶级浏览上下文。如果不使用此关键字,则不允许执行此操作。allow-forms
:允许嵌入式浏览上下文提交表单。如果不使用此关键字,则不允许执行此操作。allow-scripts
:允许嵌入式浏览上下文运行脚本(但不创建弹出窗口)。如果不使用此关键字,则不允许执行此操作。笔记:
allow-scripts
和allow-same-origin
,因为这允许嵌入文档以编程方式删除sandbox
属性。虽然它被接受,但这种情况并不比不使用sandbox
属性更安全。iframe
。建议此类内容应从 单独的专用域 提供,以限制潜在的损害。那里没有更多,但这 是链接