在iframe中的动态外部交叉域上强制target =“_ self”

时间:2012-07-12 19:47:06

标签: php 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>");
    },

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

提前致谢!!

3 个答案:

答案 0 :(得分:2)

您不能,父网页无法访问跨网站iframe,iframe无法访问跨网站的母网页。

这属于Same-Origin政策,无法在客户端进行解决。你可以在服务器上抓取这些网站并将它们作为你自己的网站展示,但是我不确定它会有多么有效。

答案 1 :(得分:0)

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

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

More Reading

答案 2 :(得分:0)

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

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

它将禁用Same-Origin-Policy,然后我们可以在跨站点iframe上进行必要的更改。