我在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上进行所需的更改。