我有一个基页,其中使用了不同域的Iframe。 内容得到渲染,但如果用户点击iframe内部呈现的任何链接,它将作为普通页面打开。 我希望它只在Iframe中打开。
有关信息,我可以控制我的基页以及托管在不同域上的应用程序..我想在iframe中这样做。
简单来说,在iframe中打开的整个网站,用户应该只能在iframe中完成他的工作。点击iframe内的任何链接都不应该在浏览器中打开。这样我就可以创建一个可以在iframe中打开我的应用程序(现有)的中央应用程序。如果用户单独打开应用程序,它也可以工作。
答案 0 :(得分:1)
如果您无权访问iFrame页面的代码,您将无法做到这一点。
答案 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