力目标=“_自我;关于iframe中的动态外部跨域


force target="_self" on dynamic external cross domain in iframe

我在chrome上有一个使用iframe的kiosk模式的站点,我在其中打开了许多外部站点。每个网站都有自己的链接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>");
    },

任何帮助或建议都将非常好。

提前感谢!!

不能,父页面不能访问跨站点的iframe,iframe不能访问跨网站的父页面。

这属于同源策略,不能在客户端上解决。你可以在服务器上抓取这些网站,并将其作为自己的网站呈现,但我不确定这会有多有效。

如果您在Chrome上运行,可以尝试使用html5iframe sandbox属性。

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

更多阅读

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

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

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