iframe的内容不仅仅在iframe中打开

时间:2016-04-06 13:31:11

标签: javascript html html5 redirect iframe

我有一个基页,其中使用了不同域的Iframe。 内容得到渲染,但如果用户点击iframe内部呈现的任何链接,它将作为普通页面打开。 我希望它只在Iframe中打开。

有关信息,我可以控制我的基页以及托管在不同域上的应用程序..我想在iframe中这样做。

简单来说,在iframe中打开的整个网站,用户应该只能在iframe中完成他的工作。点击iframe内的任何链接都不应该在浏览器中打开。这样我就可以创建一个可以在iframe中打开我的应用程序(现有)的中央应用程序。如果用户单独打开应用程序,它也可以工作。

2 个答案:

答案 0 :(得分:1)

如果您无权访问iFrame页面的代码,您将无法做到这一点。

请参阅:https://en.wikipedia.org/wiki/Cross-site_scripting

答案 1 :(得分:0)

从技术上讲,您可以使用.postmessage()来获取iframe中的子内容,以便向父级发送消息,以便在按钮点击时更改iframe源。

请注意,这只有在您控制了在iframe中呈现的子代码时才有效,我无法从您的问题中判断出来。

示例,在您的子站点中,在iframe内部,当您单击内部iframe站点时,需要将代码发送到父页面(iframe外部):

self.parent.postMessage("stringSayingDoSomething", "*");

然后,您的父网站设置了一个事件监听器来接收消息并执行操作..该操作可以在父端执行某些操作..或者,将消息发送回子站点以执行某些操作代替:

window.addEventListener("message", receiveMessage, false);
            function receiveMessage(event) {

                switch (message) {
                    case "stringSayingDoSomething":
                        DoMyFunctionNowThatChildFrameHasToldMeTo();
                        break;

以下是有关堆栈溢出的另一个问题:Communicating cross-origin from parent to child iframe