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

时间:2013-06-04 23:53:51

标签: html iframe hyperlink

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

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

我有一个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个内容。

我的iframetarget="_parent"标题下有基本标记(基础iframe)。

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

示例iframe:

base target="_parent" /base 

正文内容:

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

此链接不起作用,忽略点击次数。

非常感谢任何帮助。

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

谢谢, 马杜

3 个答案:

答案 0 :(得分:8)

我无法解释'为什么'因为对iframe的sandbox属性了解不多,但是当我删除该属性时,在新标签中打开的链接对我来说很合适。

编辑:

再看一下,似乎你可以添加属性“allow-top-navigation”,然后将链接更改为'target = _parent',这样可行,但是如果你离开它仍然无法工作目标= _blank

以下是mozilla网站的一些文档

沙箱HTML5只 如果指定为空字符串,则此属性会对可以显示在内联框架中的内容启用额外限制。属性的值可以是以空格分隔的标记列表,这些标记可以解除特定限制。有效代币是:     

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

注意:

      
            
  • 当嵌入文档与主页面具有相同的来源时,强烈建议不要同时使用allow-scriptsallow-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')