【问题标题】:Links inside iframe (not in popup) doesnt workiframe 内的链接(不在弹出窗口中)不起作用
【发布时间】:2013-05-31 12:40:11
【问题描述】:

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

所以这是我的问题,例如 sn-p:

我有一个看起来像这样的 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 填充。

我的iframeiframe 的标题下有基本标记(基本target="_parent")。

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

示例 iframe:

base target="_parent" /base 

正文内容:

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

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

非常感谢任何帮助。

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

谢谢, 马杜

【问题讨论】:

  • 您能否提供一个将出现在 iframe 中的代码示例?

标签: html iframe hyperlink


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,用

    解决了

    window.open(url, '_blank')

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • allow-popups 添加到&lt;iframe&gt;&lt;/iframe&gt; 解决了我的问题。谢谢
      【解决方案4】:

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

      编辑:

      再看一看,似乎你可以添加属性“allow-top-navigation”,然后将链接更改为“target=_parent”,这样就可以了,但是如果你离开它仍然不起作用目标=_空白

      这是来自 Mozilla 网站的一些文档

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

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

      注意:

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

      那里没有更多,但here's the link

      【讨论】:

      • 谢谢,我想在新标签页中打开链接。但似乎很难。
      • 我完全删除了沙盒属性 - 现在链接可以工作了。谢谢老兄。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多