我已经解决了其他类似问题以解决这个问题,但在这种情况下,所有解决方案都无法正常工作。
所以这是我的示例代码段的问题:
我有一个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
元素下:单击链接时,使用servlet填充iframe
个内容。
我的iframe
在target="_parent"
标题下有基本标记(基础iframe
)。
我已使用<base>
标记来指定行为,并且链接还有target="_blank"
,但我的链接根本不起作用。
相同的链接在iframe之外。
示例iframe:
base target="_parent" /base
正文内容:
a target="_blank" href="http://ictforu.com" /a
此链接不起作用,忽略点击次数。
非常感谢任何帮助。
抱歉,之前的html标签存在一些编辑问题。
谢谢, 马杜
答案 0 :(得分:8)
我无法解释'为什么'因为对iframe的sandbox属性了解不多,但是当我删除该属性时,在新标签中打开的链接对我来说很合适。
编辑:
再看一下,似乎你可以添加属性“allow-top-navigation”,然后将链接更改为'target = _parent',这样可行,但是如果你离开它仍然无法工作目标= _blank
以下是mozilla网站的一些文档
沙箱HTML5只 如果指定为空字符串,则此属性会对可以显示在内联框架中的内容启用额外限制。属性的值可以是以空格分隔的标记列表,这些标记可以解除特定限制。有效代币是:
allow-same-origin
:允许将内容视为来自其正常来源。如果未使用此关键字,则嵌入的内容将被视为来自唯一来源。allow-top-navigation
:允许嵌入式浏览上下文将内容导航(加载)到顶级浏览上下文。如果未使用此关键字,则不允许此操作。allow-forms
:允许嵌入式浏览上下文提交表单。如果未使用此关键字,则不允许此操作。allow-scripts
:允许嵌入式浏览上下文运行脚本(但不创建弹出窗口)。如果未使用此关键字,则不允许此操作。注意:强>
allow-scripts
和allow-same-origin
,因为这样可以使嵌入式文档以编程方式删除{ {1}}属性。虽然它已被接受,但这种情况并不比不使用sandbox
属性更安全。sandbox
之外的用户浏览器中显示潜在的恶意内容,则沙盒通常只有很小的帮助。建议此类内容应从单独的专用域提供,以限制潜在的损害。
那里没有更多,但是here's the link
答案 1 :(得分:0)
沙盒可让您控制设置所需的权限,而无需打开所有内容。在这里您需要设置权限,“ allow-scripts allow-popups”。它将正常工作。确保根据情况删除配置。
ID | NAME
1 HOME
2 GAME
3 LINK
答案 2 :(得分:0)
我遇到了同样的问题,使用
进行了修复window.open(url,'_blank')