首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单击一个按钮时,关闭iframe中的iframe (父:php,子:aspx)

问单击一个按钮时,关闭iframe中的iframe (父:php,子:aspx)
EN

Stack Overflow用户
提问于 2014-01-14 23:33:55
回答 2查看 1.2K关注 0票数 0

我已经尝试了一段时间来解决这个问题,我也看到了很多类似的问题,但并不完全是我想要的。

我有一个.php页面作为父页面,它有一个iFrame,它显示一个.aspx页面。我想做的是:当用户单击aspx页面中的一个按钮时,关闭模式iframe并返回到php页面。

代码语言:javascript
复制
parent.php
+-------------------------------------------+
|                                           |
|                                           |
|       "survey"                            |
|       CloseSurvey()                       |
|       +--------------------------+        |
|       |                          |        |
|       |                          |        |
|       |    child.aspx            |        |
|       |    +---------------+     |        |
|       |    |               |     |        |
|       |    |    btnClose   |     |        |
|       |    |               |     |        |
|       |    |               |     |        |
|       |    |               |     |        |
|       |    +---------------+     |        |
|       |                          |        |
|       |                          |        |
|       +--------------------------+        |
|                                           |
+-------------------------------------------+

void btnClose_Click(object sender, EventArgs e)
{
    //Close iframe
}

我试过了

代码语言:javascript
复制
ClientScript.RegisterStartupScript(typeof(Page), "CLOSEWINDOW", "parent.CloseSurvey()");

它什么也没做。没有错误,也不会关闭。

我一直在试图找出如何在父母中调用该方法,但我仍然无法弄清楚。

如何关闭从child.aspx弹出的模态iframe??

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-15 00:14:29

如果您的php和aspx页面位于相同的域中,则可以这样做:

在PHP页面上有一个名为closeIframe的公共方法

单击.aspx页面中的“关闭”按钮,使用window.parent.closeIframe从父级调用closeIframe方法。

根据您的需求,PHP页面中的closeIframe方法可以隐藏或删除iframe。

如果您的php和aspx页面位于不同的域上,则可以实现类似的功能,但需要使用window message events。

另外,如果关闭按钮不需要调用任何服务器端代码,我建议您使用<a>标记制作关闭按钮。

编辑:

因为aspx页面位于子域中,所以解决方案将涉及窗口消息事件。

在“关闭”按钮上单击“从aspx调用脚本”:

代码语言:javascript
复制
window.parent.postMessage("closeframe", "*");

php页面上用于侦听消息的代码:

代码语言:javascript
复制
function listenMessage(event) {
    switch(event){
        case "closeframe":
            //logic to close the iframe
            break;
    }
}

if (window.addEventListener) {
    window.addEventListener("message", listenMessage, false);
} else {
    window.attachEvent("onmessage", listenMessage);
}
票数 1
EN

Stack Overflow用户

发布于 2014-01-15 00:03:47

你不会真的关闭一个<iframe>。要么更改Element.src,要么使用Element.innerHTML = ''或Element.removeChild(otherNode)删除元素。使用frames[number]从.aspx文件中使用JavaScript从.aspx中获取JavaScript。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21126299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档