我一直试图弄清楚这一点,我看到很多类似的问题,但不完全是我正在寻找的。
我有一个.php页面作为父页面,它有一个显示.aspx页面的iFrame。 我想要做的是:当用户单击aspx页面内的按钮时,关闭模态iframe并返回到php页面。
parent.php
+-------------------------------------------+
| |
| |
| "survey" |
| CloseSurvey() |
| +--------------------------+ |
| | | |
| | | |
| | child.aspx | |
| | +---------------+ | |
| | | | | |
| | | btnClose | | |
| | | | | |
| | | | | |
| | | | | |
| | +---------------+ | |
| | | |
| | | |
| +--------------------------+ |
| |
+-------------------------------------------+
void btnClose_Click(object sender, EventArgs e)
{
//Close iframe
}
我试过了
ClientScript.RegisterStartupScript(typeof(Page), "CLOSEWINDOW", "parent.CloseSurvey()");
它没有做任何事情。没有错误,也不会关闭。
我一直试图找出如何在父母中调用该方法,但我还是无法弄明白。
如何从child.aspx ??
关闭模态iframe弹出窗口答案 0 :(得分:1)
如果你的php和aspx页面在相同的域上,你可以这样做:
PHP页面上的有一个名为closeIframe
单击.aspx页面上的关闭按钮,使用closeIframe
window.parent.closeIframe
方法
PHP页面中的closeIframe方法可以隐藏或删除iframe,具体取决于您的要求。
如果你的php和aspx页面在不同的域上,你可以实现类似的功能,但你需要使用window message events。
另外,如果关闭按钮不需要调用任何服务器端代码,我建议您使用<a>
标记创建关闭按钮。
修改强>
由于aspx页面位于子域上,因此解决方案将涉及窗口消息事件。
在关闭按钮时从 aspx 调用的脚本:
window.parent.postMessage("closeframe", "*");
php 页面上的代码,用于收听消息:
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 :(得分:0)
你并没有真正关闭<iframe>
。您可以使用Element.src
或Element.innerHTML = ''
更改Element.removeChild(otherNode)
或删除元素。使用frames[number]
使用JavaScript从.aspx文件中获取iframe
。