0

我在 chrome 上使用 iframe 在信息亭模式下有一个站点,我在其中打开了许多外部站点。每个站点都有自己的链接,target="_blank"。我无法控制这些外部链接。我只想在 iframe 中打开所有这些外部链接,或者我需要为这些 target=_blank 链接发布一些消息。我无法在自助服务终端上打开新窗口。到目前为止我已经搜索过,发现它必须是一些服务器端编码。Javascript 在这方面没有任何帮助。

我的 iframe 代码:

  navigateToExternal:function(href)
    {
        Engine.ui.openMenu();
        Engine.ui.exit();
        Engine.ui.mostRecentSection = "external";

        $("a[data-navsection], a[href]").removeClass("disabled");
        $("a[href='" + href + "']").addClass("disabled");

        $(".footer").hide();

       var sandbox = "sandbox=\"allow-forms allow-scripts allow-same-origin\"";


         $("#content-container").append("<iframe id=\"contentFrame\" src=" + href + "\"" + sandbox + "></iframe>");
    },

任何帮助或建议都会非常棒。

提前致谢!!

4

3 回答 3

2

不能,父页面无法访问跨站iframe,iframe也无法访问跨站父页面。

这属于同源策略,无法在客户端解决。您可以在服务器上抓取这些站点并将它们呈现为您自己的,但是我不确定这会有多有效。

于 2012-07-12T19:49:10.573 回答
0

如果您在 Chrome 上运行,则可以尝试 html5 iframesandbox属性。

<iframe sandbox="allow-scripts allow-forms" src="..."></iframe>

更多阅读

于 2012-07-31T05:13:59.910 回答
0

我得到了解决这个问题,并想分享。我们可以传递一个命令行参数对于 Mac,打开终端并运行:

 $ open -a Google\ Chrome --args --disable-web-security 

它将禁用同源策略,然后我们可以在跨站点 iframe 上进行所需的更改。

于 2012-11-16T17:38:48.300 回答